読者です 読者をやめる 読者になる 読者になる

The Round

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

静岡でGo言語やりたい人!!→こちら

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

Defer overhead in go

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使わない版が少し遅くなっているのが気になるけど・・・