Moose, Mouse, Class::Accessor::Fastのアクセサでベンチマーク取ってみた
「馬鹿にできないアクセサのオーバーヘッド - Craftworks Tech Blog - Branch」にもあるように、Mooseのアクセサによるオーバーヘッドは無視するにはちょっと大きいという印象があります。
じゃあ、Mouseだったらどうなんだろうとか、自分が使うサーバのスペックも随分上がったしとか、そういう経緯で改めてベンチを取ってみました。コードは@Craftworksさんの物にMouseを足しただけ。以下に貼り付けておきます。
で、こいつをXeon X3330@2.66GHzで走らせた結果が以下(cmp_these部分のみ)。
Rate moose_ro moose_rw caf_rw mouse_ro mouse_rw mouse_direct moose_direct caf_direct moose_ro 297030/s -- -8% -28% -66% -68% -82% -83% -89% moose_rw 322581/s 9% -- -22% -63% -66% -81% -82% -88% caf_rw 410959/s 38% 27% -- -53% -56% -75% -77% -85% mouse_ro 882353/s 197% 174% 115% -- -6% -47% -50% -68% mouse_rw 937500/s 216% 191% 128% 6% -- -44% -47% -66% mouse_direct 1666667/s 461% 417% 306% 89% 78% -- -6% -39% moose_direct 1764706/s 494% 447% 329% 100% 88% 6% -- -35% caf_direct 2727273/s 818% 745% 564% 209% 191% 64% 55% --
Mouse速すぎワロタ。Class::Accessor::Fastに対して2倍以上という好成績。そもそも一番遅いMooseでも秒間30万回ぐらい呼べているので、そんなに気にすることは無いかなという印象ですね。
なお、MOUSE_PUREPERL=1で実行するとこんな感じ。
Rate mouse_ro moose_ro moose_rw mouse_rw caf_rw moose_direct mouse_direct caf_direct mouse_ro 297030/s -- -7% -13% -14% -29% -82% -83% -89% moose_ro 319149/s 7% -- -6% -7% -23% -81% -82% -88% moose_rw 340909/s 15% 7% -- -1% -18% -80% -81% -87% mouse_rw 344828/s 16% 8% 1% -- -17% -79% -80% -87% caf_rw 416667/s 40% 31% 22% 21% -- -75% -76% -85% moose_direct 1666667/s 461% 422% 389% 383% 300% -- -6% -39% mouse_direct 1764706/s 494% 453% 418% 412% 324% 6% -- -35% caf_direct 2727273/s 818% 755% 700% 691% 555% 64% 55% --
XS化による効果の程が分かるというものですね。@__gfx__++