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, di...@veryhaha.com 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, di...@veryhaha.com 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 golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to