1
0
mirror of https://github.com/golang/go synced 2024-11-26 02:57:57 -07:00

go/printer: use strings.Split instead of specialized code

With the faster strings package, the difference between
the specialized code and strings.Split is in the noise:

benchmark         old ns/op    new ns/op    delta
BenchmarkPrint     16724291     16686729   -0.22%

(Measured on a Mac Pro, 2.8GHz Quad-core Intel Xeon,
4GB 800 MHz DDR2, Mac OS X 10.8.3)

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/8100044
This commit is contained in:
Robert Griesemer 2013-03-28 15:47:39 -07:00
parent 47ec6e23d2
commit f38811979c

View File

@ -395,35 +395,6 @@ func (p *printer) writeCommentPrefix(pos, next token.Position, prev, comment *as
}
}
// Split comment text into lines
// (using strings.Split(text, "\n") is significantly slower for
// this specific purpose, as measured with: go test -bench=Print)
//
func split(text string) []string {
// count lines (comment text never ends in a newline)
n := 1
for i := 0; i < len(text); i++ {
if text[i] == '\n' {
n++
}
}
// split
lines := make([]string, n)
n = 0
i := 0
for j := 0; j < len(text); j++ {
if text[j] == '\n' {
lines[n] = text[i:j] // exclude newline
i = j + 1 // discard newline
n++
}
}
lines[n] = text[i:]
return lines
}
// Returns true if s contains only white space
// (only tabs and blanks can appear in the printer's context).
//
@ -616,7 +587,7 @@ func (p *printer) writeComment(comment *ast.Comment) {
// for /*-style comments, print line by line and let the
// write function take care of the proper indentation
lines := split(text)
lines := strings.Split(text, "\n")
// The comment started in the first column but is going
// to be indented. For an idempotent result, add indentation