April 2022
Beginner to intermediate
464 pages
6h 44m
Japanese
Goは、標準でベンチマークを実行できるように整備されています。ベンチマークは go test コマンドで実行されることもあり、この節に記載しています。
以下のサンプルコードに対して、ベンチマークを実装してみます。
package cookbooktest
func AppendSlice(count, value int) []int {
res := []int{}
for i := 0; i < count; i++ {
res = append(res, value)
}
return res
}
func FirstAllocSlice(count, value int) []int {
res := make([]int, count)
for i := 0; i < count; i++ {
res[i] = value
}
return res
}
ベンチマークは、関数名を Benchmark ではじめて、引数に *testing.B を取ります。b.Nはベンチマーク結果が安定するまで自動的に増加する数値です。ベンチマークの試行回数を定義することなく、結果が安定するまで自動で複数回実行してくれます。
package cookbooktest
import "testing"
func BenchmarkAppendSlice(b *testing.B) {
for i := 0; i < b.N; i++ {
AppendSlice(10000, 111)
}
}
func BenchmarkFirstAllocSlice(b *testing.B) {
for i := 0; i < b.N; i++Read now
Unlock full access