In fact, CSE works here.
package main
import (
"testing"
)
var v1a int
func Benchmark_CSE_Case_1a(b *testing.B) {
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) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
var x, y, z = 123, 456, 789
t := (y+z) / x
v1a = t + t + t
}
}
On Saturday, March 10, 2018 at 1:31:58 PM UTC-5, [email protected] wrote:
>
> sorry, my mistake.
> I run another benchmark.
> This benchmark fails to compile.
>
> On Saturday, March 10, 2018 at 1:27:17 PM UTC-5, [email protected] wrote:
>>
>> 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.