diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/go.test/test/fixedbugs/bug369.go')
-rw-r--r-- | gcc-4.9/gcc/testsuite/go.test/test/fixedbugs/bug369.go | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/go.test/test/fixedbugs/bug369.go b/gcc-4.9/gcc/testsuite/go.test/test/fixedbugs/bug369.go new file mode 100644 index 000000000..6d526228b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/go.test/test/fixedbugs/bug369.go @@ -0,0 +1,62 @@ +// $G -N -o slow.$A $D/bug369.dir/pkg.go && +// $G -o fast.$A $D/bug369.dir/pkg.go && +// run + +// NOTE: This test is not run by 'run.go' and so not run by all.bash. +// To run this test you must use the ./run shell script. + +// 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. + +// Test that compiling with optimization turned on produces faster code. + +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() { + 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") + } +} |