-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Open
Labels
Milestone
Description
Running this stupid microbenchmark on linux/amd64, with different version of Go.
http://play.golang.org/p/5U0i26sA8U
package main
// int rand() { return 42; }
import "C"
import "testing"
func BenchmarkCgo(b *testing.B) {
for i := 0; i < b.N; i++ {
C.rand()
}
}
func main() {
testing.Main(func(string, string) (bool, error) {
return true, nil
}, nil, []testing.InternalBenchmark{
{"BenchmarkCgo", BenchmarkCgo},
}, nil)
}
$ go1 run cgobench.go -test.bench=.
testing: warning: no tests to run
PASS
BenchmarkCgo 50000000 30.8 ns/op
$ go112 run cgobench.go -test.bench=.
testing: warning: no tests to run
PASS
BenchmarkCgo 50000000 40.9 ns/op
$ go121 run cgobench.go -test.bench=.
testing: warning: no tests to run
PASS
BenchmarkCgo 50000000 46.1 ns/op
$ go133 run cgobench.go -test.bench=.
testing: warning: no tests to run
PASS
BenchmarkCgo 50000000 48.3 ns/op
$ go141 run cgobench.go -test.bench=.
testing: warning: no tests to run
PASS
BenchmarkCgo 10000000 160 ns/op
$ go run cgobench.go -test.bench=. # today's Go tip, f4a2617
testing: warning: no tests to run
PASS
BenchmarkCgo 10000000 203 ns/op
Why? Go 1.4 is much worse than any of the previous releases.
And Go tip is even worse than Go 1.4. This might be understandable,
but I wonder why Go 1.4 is that much slower than 1.3.3?
patricksuo, chenzhekl and mancasg