Исходники и презентации
This commit is contained in:
@ -0,0 +1,40 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
// go test -bench=. comparison_test.go
|
||||
|
||||
const size = 1 << 10
|
||||
|
||||
func BenchmarkWithoutOptimizations(b *testing.B) {
|
||||
data := make([]int, size)
|
||||
for i := 0; i < b.N; i++ {
|
||||
for j := 0; j < len(data); j++ {
|
||||
data[j] = i
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkWithCalculatedLength(b *testing.B) {
|
||||
data := make([]int, size)
|
||||
for i := 0; i < b.N; i++ {
|
||||
length := len(data)
|
||||
for j := 0; j < length; j++ {
|
||||
data[j] = i
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkWithLoopUnwinding(b *testing.B) {
|
||||
data := make([]int, size)
|
||||
for i := 0; i < b.N; i++ {
|
||||
for j := 0; j < len(data)/4; j += 4 {
|
||||
data[j] = i
|
||||
data[j+1] = i
|
||||
data[j+2] = i
|
||||
data[j+3] = i
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user