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:
parent
47ec6e23d2
commit
f38811979c
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user