我目前在玩 go,它的汇编、浮点运算性能 ( float32) 和纳秒级的优化。我对一个简单的函数调用的开销有点困惑:
func BenchmarkEmpty(b *testing.B) {
for i := 0; i < b.N; i++ {
}
}
func BenchmarkNop(b *testing.B) {
for i := 0; i < b.N; i++ {
doNop()
}
}
doNop的实现:
TEXT ·doNop(SB),0,$0-0
RET
结果(go test -bench .):
BenchmarkEmpty 2000000000 0.30 ns/op
BenchmarkNop 2000000000 1.73 ns/op
我不习惯组装和/或 go 的内部结构。go编译器/链接器可以内联汇编中定义的函数吗?我可以以某种方式给链接器一个提示吗?对于一些简单的函数,比如“添加两个 R3 向量”,这会消耗所有可能的性能提升。
(转到 1.4.2,amd64)
相关分类