参考资料
Go1.13 defer 的性能是如何提高的 https://studygolang.com/articles/23352
golang defer性能损耗和实际使用场景 https://blog.csdn.net/u010853261/article/details/102773637
结论: golang 使用 defer 对性能影响很小(1.13版本以上)
这里使用参考文章2内的代码进行benchmark测试
golang版本: go version go1.14 linux/amd64
package main
import (
"sync"
"testing"
)
var lock sync.Mutex
func NoDefer() {
lock.Lock()
lock.Unlock()
}
func Defer() {
lock.Lock()
defer lock.Unlock()
}
func BenchmarkNoDefer(b *testing.B) {
for i := 0; i < b.N; i++ {
NoDefer()
}
}
func BenchmarkDefer(b *testing.B) {
for i := 0; i < b.N; i++ {
Defer()
}
}
go test -bench=. defer_test.go
结果:
可见影响并不大
|
请发表评论