diff options
Diffstat (limited to '')
-rw-r--r-- | test/fixedbugs/bug369.dir/main.go | 55 | ||||
-rw-r--r-- | test/fixedbugs/bug369.dir/pkg.go | 15 |
2 files changed, 70 insertions, 0 deletions
diff --git a/test/fixedbugs/bug369.dir/main.go b/test/fixedbugs/bug369.dir/main.go new file mode 100644 index 0000000..03b53a5 --- /dev/null +++ b/test/fixedbugs/bug369.dir/main.go @@ -0,0 +1,55 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "flag" + "os" + "runtime" + "testing" + + fast "./fast" + slow "./slow" +) + +var buf = make([]byte, 1048576) + +func BenchmarkFastNonASCII(b *testing.B) { + for i := 0; i < b.N; i++ { + fast.NonASCII(buf, 0) + } +} + +func BenchmarkSlowNonASCII(b *testing.B) { + for i := 0; i < b.N; i++ { + slow.NonASCII(buf, 0) + } +} + +func main() { + testing.Init() + os.Args = []string{os.Args[0], "-test.benchtime=100ms"} + flag.Parse() + + rslow := testing.Benchmark(BenchmarkSlowNonASCII) + rfast := testing.Benchmark(BenchmarkFastNonASCII) + tslow := rslow.NsPerOp() + tfast := rfast.NsPerOp() + + // Optimization should be good for at least 2x, but be forgiving. + // On the ARM simulator we see closer to 1.5x. + speedup := float64(tslow) / float64(tfast) + want := 1.8 + if runtime.GOARCH == "arm" { + want = 1.3 + } + if speedup < want { + // TODO(rsc): doesn't work on linux-amd64 or darwin-amd64 builders, nor on + // a Lenovo x200 (linux-amd64) laptop. + // println("fast:", tfast, "slow:", tslow, "speedup:", speedup, "want:", want) + // println("not fast enough") + // os.Exit(1) + } +} diff --git a/test/fixedbugs/bug369.dir/pkg.go b/test/fixedbugs/bug369.dir/pkg.go new file mode 100644 index 0000000..9964347 --- /dev/null +++ b/test/fixedbugs/bug369.dir/pkg.go @@ -0,0 +1,15 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package pkg + +func NonASCII(b []byte, i int) int { + for i = 0; i < len(b); i++ { + if b[i] >= 0x80 { + break + } + } + return i +} + |