It looks CSE doesn't work for the following case.
package main
import (
"testing"
)
var v1a int
func Benchmark_CSE_Case_1a(b *testing.B) {
s := make([]Element, N)
b.ResetTimer()
for i := 0; i < b.N; i++ {
var x, y, z = 123, 456, 789
v1a = (y+z) / x + (y+z) / x + (y+z) / x
}
}
func Benchmark_CSE_Case_1b(b *testing.B) {
s := make([]Element, N)
b.ResetTimer()
for i := 0; i < b.N; i++ {
var x, y, z = 123, 456, 789
t := y+z) / x
v1a = t + t + t
}
}
The result:
$ go test -bench=.
goos: linux
goarch: amd64
Benchmark_SumArrayElements_GlobalVar-4 5000 201535 ns/op
Benchmark_SumArrayElements_LocalVar-4 30000 39922 ns/op
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.