今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

Object Pooling の実験

ものをほじしてもはやくならない [Object Pooling しても速くならない]ものをほじしてもはやくならない そのに [Object Pooling しても速くならない その弐]で、Object Pooling の速度を計測している。
そのにでは、Object Pooling をしている方が半分の時間で処理できている。Pooling しているオブジェクトのコードを見ると、コンストラクタ内で100回のループをしているだけである。コードから読み取ると、あるオブジェクトを1000000回(100万回)使用する場合、Object Pooling を行うことにより約40秒を節約できるわけだ。ひとつのオブジェクトあたりにすると 40μ秒。Object Pooling はパフォーマンスに効果があるように思われるかも知れない。
でも、それは大間違いだ。そこだけに目を奪われてはいけない。そのオブジェクトの典型的な例のプロファイルを計測した結果、その寿命の間にトータルで1秒間 CPUを消費していたとする。40μ秒はそのうちの 1/25000 に過ぎない。
ソフトウェアのパフォーマンスを向上しようとするなら、もっとも重要なのはプロファイリング。全体の処理で1%を占めている部分のパフォーマンスを1万倍改善しても全体では1%程度しか向上しない。全体のうちの10%を占めている部分を半分の時間で処理できるように改善すれば、全体では5%改善する。