https://github.com/golang/go/issues/5373
I made a test
package main
import (
"testing"
)
const N = 1024 * 100
var a [N]int
func BenchmarkArrayPtr(b *testing.B) {
for i := 0; i < b.N; i++ {
for i := range &a {
a[i] = 0
}
}
}
func BenchmarkArray(b *testing.B) {
for i := 0; i < b.N; i++ {
for i := range a {
a[i] = 0
}
}
}
func BenchmarkArrayB(b *testing.B) {
var k int
go func() {
k = 123
}()
for i := 0; i < b.N; i++ {
for k = range a {
a[k] = 0
}
}
}
/*
Outputs:
BenchmarkArrayPtr-4 50000 90457 ns/op
BenchmarkArray-4 100000 49656 ns/op
BenchmarkArrayB-4 100000 49628 ns/op
*/
it looks the loop in the BenchmarkArrayB is also optimized as a memclr
call, but I can't make sure it is true.
If it is true, it is over-optimized.
Anyone can confirm it is over-optimized or not?
--
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.