注:古い記事の為、内容が最新ではない可能性がありますm(_ _)m
http://lk4d4.darth.io/posts/defer/
Deferは遅い、とのこと。 たしかに以前Go研で速度競争したときもdeferが遅いということは話題になった。
ただ、Go1.3でDefer周りのパフォーマンス改善があるらしい。
Go 1.3 Release Notes - The Go Programming Language
The runtime handles defers more efficiently, reducing the memory footprint by about two kilobytes per goroutine that calls defer.
1.3beta落として最初の記事中のコードでベンチマーク比較してみた。
1.2
BenchmarkPut 50000 35602 ns/op BenchmarkPutDefer 20000 85354 ns/op BenchmarkGet 50000 36889 ns/op BenchmarkGetDefer 10000 155507 ns/op
1.3beta
BenchmarkPut 50000 37795 ns/op BenchmarkPutDefer 50000 55992 ns/op BenchmarkGet 50000 37692 ns/op BenchmarkGetDefer 20000 98350 ns/op
おお。結構早くなってる\(^o^)/ でもDefer使わない版が少し遅くなっているのが気になるけど・・・