aboutsummaryrefslogtreecommitdiffstats
path: root/func.go
diff options
context:
space:
mode:
authorFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-06-19 13:54:53 +0900
committerFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-06-19 14:47:02 +0900
commitce14acbe573bdf2853e67ea418940e835c07409b (patch)
tree8fa3e7410a3d65d968cb39b1d1643e2495bf91cc /func.go
parent9e0c68dbe0001c71da084fa5bb3f02d6ee4fb4ed (diff)
downloadandroid_build_kati-ce14acbe573bdf2853e67ea418940e835c07409b.tar.gz
android_build_kati-ce14acbe573bdf2853e67ea418940e835c07409b.tar.bz2
android_build_kati-ce14acbe573bdf2853e67ea418940e835c07409b.zip
reduce ssvWriter allocation in funcSort
mark old ns/op new ns/op delta BenchmarkFuncSort 1572 1413 -10.11% benchmark old allocs new allocs delta BenchmarkFuncSort 8 7 -12.50% benchmark old bytes new bytes delta benchmarkFuncSort 188 156 -17.02%
Diffstat (limited to 'func.go')
-rw-r--r--func.go11
1 files changed, 7 insertions, 4 deletions
diff --git a/func.go b/func.go
index 550f67b..62e9af4 100644
--- a/func.go
+++ b/func.go
@@ -303,12 +303,15 @@ func (f *funcSort) Eval(w io.Writer, ev *Evaluator) {
// Remove duplicate words.
var prev string
- sw := ssvWriter{w: w}
for _, tok := range toks {
- if prev != tok {
- sw.WriteString(tok)
- prev = tok
+ if prev == tok {
+ continue
+ }
+ if prev != "" {
+ writeByte(w, ' ')
}
+ io.WriteString(w, tok)
+ prev = tok
}
addStats("funcbody", "sort", t)
}