下面是包含两个函数的示例。但是,匿名函数 f0 由于某种奇怪的原因,具有浮点数和字符串变量,将它们移动到堆中。任何想法如何避免不必要的分配?
import (
"testing"
)
var _int int32 = 10
var _float float32 = 10
var _string = "go"
var f0 = func(v interface{}) {
_ = v
}
func f1(v interface{}) {
_ = v
}
func Benchmark(b *testing.B) {
for i := 0; i < b.N; i++ {
f0(_int)
f1(_int)
f0(_float) // <- alloc
f1(_float)
f0(_string) // <- alloc
f1(_string)
}
}
扬帆大鱼
相关分类