The Round

合同会社ナイツオの開発ブログ

[PR] 5分から相談できるGCP™ 開発コンサル!→こちら

Go1.3のDeferパフォーマンス

注:古い記事の為、内容が最新ではない可能性があります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使わない版が少し遅くなっているのが気になるけど・・・