Hi Solokov,
interesting idea, but it does not seem that the cache size would be the
issue at hand here — please note that slices of more than 524288 integers
do not fit in my laptop cache:
1. The runtime is linear to the size of the array (no "cliff" — see
attached picture)
2. The page misses are ridiculously low (expected since the benchmark
yields itself to contiguous allocation and processing):
Performance counter stats for '/usr/local/go/bin/go test -bench=.':
20882.464799 task-clock (msec) # 0.998 CPUs
utilized
4,947 context-switches # 0.237
K/sec
239 cpu-migrations # 0.011
K/sec
23,583 page-faults # 0.001
M/sec
64,142,963,898 cycles # 3.072
GHz
37,246,686,615 instructions # 0.58 insn per
cycle
4,753,144,504 branches # 227.614
M/sec
2,870,298 branch-misses # 0.06% of all
branches
I am running the following excerpt from the original code:
package P
import (
"strconv"
"testing"
)
func memclr(a []int) {
for i := range a {
a[i] = 0
}
}
func BenchmarkMemclr(b *testing.B) {
for i := 100000; i < 409600000; i *= 2 {
b.Run("bench"+strconv.Itoa(i), func(b *testing.B) {
var a = make([]int, i)
b.ResetTimer()
for i := 0; i < b.N; i++ {
memclr(a)
}
})
}
}
<https://lh3.googleusercontent.com/-tHycMAwzjj0/WFOyepsWGKI/AAAAAAAAAAM/L2f8MPAr9BMsyC5jTrfBIZnekJeqrALIQCLcB/s1600/running_time.png>
--
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.