aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime/slice.c
diff options
context:
space:
mode:
authorDave Cheney <dave@cheney.net>2013-08-06 07:51:37 +1000
committerDave Cheney <dave@cheney.net>2013-08-06 07:51:37 +1000
commit8ce8adbe7a194cba2819b533b603d92df40fe799 (patch)
treec7d3ff9364633dee92064125e46ec43f85929309 /src/pkg/runtime/slice.c
parent19e292268896c245c781e711ae3fff5ff5e127e5 (diff)
downloadgo-8ce8adbe7a194cba2819b533b603d92df40fe799.tar.xz
runtime: tune append crossover on amd64 and 386
Fixes #4963. Sets the append crossover to 0 on intel platforms. Results for linux/amd64 Core i5 SNB benchmark old ns/op new ns/op delta BenchmarkAppend 102 104 +1.96% BenchmarkAppend1Byte 10 11 +0.92% BenchmarkAppend4Bytes 15 11 -28.10% BenchmarkAppend7Bytes 17 12 -32.58% BenchmarkAppend8Bytes 18 12 -36.17% BenchmarkAppend15Bytes 24 11 -55.02% BenchmarkAppend16Bytes 25 11 -56.03% BenchmarkAppend32Bytes 11 12 +4.31% BenchmarkAppendStr1Byte 8 9 +13.99% BenchmarkAppendStr4Bytes 11 9 -17.52% BenchmarkAppendStr8Bytes 14 9 -35.70% BenchmarkAppendStr16Bytes 21 9 -55.19% BenchmarkAppendStr32Bytes 10 10 -5.66% BenchmarkAppendSpecialCase 49 52 +7.96% Results for linux/386 Atom(TM) CPU 330 @ 1.60GHz benchmark old ns/op new ns/op delta BenchmarkAppend 219 218 -0.46% BenchmarkAppend1Byte 75 72 -3.44% BenchmarkAppend4Bytes 92 73 -19.87% BenchmarkAppend7Bytes 108 74 -31.20% BenchmarkAppend8Bytes 116 74 -35.95% BenchmarkAppend15Bytes 162 77 -52.22% BenchmarkAppend16Bytes 169 77 -54.20% BenchmarkAppend32Bytes 88 86 -2.38% BenchmarkAppendStr1Byte 57 59 +3.32% BenchmarkAppendStr4Bytes 72 59 -17.40% BenchmarkAppendStr8Bytes 92 60 -34.70% BenchmarkAppendStr16Bytes 141 63 -54.89% BenchmarkAppendStr32Bytes 75 73 -2.64% BenchmarkAppendSpecialCase 270 270 +0.00% R=golang-dev, r CC=golang-dev https://golang.org/cl/12440044
Diffstat (limited to 'src/pkg/runtime/slice.c')
-rw-r--r--src/pkg/runtime/slice.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/pkg/runtime/slice.c b/src/pkg/runtime/slice.c
index 3adbe51837..58086b61c7 100644
--- a/src/pkg/runtime/slice.c
+++ b/src/pkg/runtime/slice.c
@@ -95,7 +95,7 @@ runtimeĀ·appendslice(SliceType *t, Slice x, Slice y, Slice ret)
p = ret.array+ret.len*w;
q = y.array;
w *= y.len;
- if(w <= appendCrossover) {
+ if(appendCrossover > 0 && w <= appendCrossover) {
if(p <= q || w <= p-q) // No overlap.
while(w-- > 0)
*p++ = *q++;
@@ -148,7 +148,7 @@ runtimeĀ·appendstr(SliceType *t, Slice x, String y, Slice ret)
w = y.len;
p = ret.array+ret.len;
q = y.str;
- if(w <= appendCrossover) {
+ if(appendCrossover > 0 && w <= appendCrossover) {
while(w-- > 0)
*p++ = *q++;
} else {