Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

取置きとstateとMooseX::Singletonベンチマークした

Singletonパターンの前に、以前覚えたstateって最適化されて速いのかなとベンチマークしてみた。
myで外側にするのとMooseX::Singletonを比較に。


MooseX::Singletonが多機能っぽい分不利かなーとは思ってた。



20倍か。
MooseX::Singletonを外して比較。

Benchmark: timing 10000000 iterations of outer, state...
     outer:  3 wallclock secs ( 3.69 usr +  0.01 sys =  3.70 CPU) @ 2702702.70/s (n=10000000)
     state:  3 wallclock secs ( 3.54 usr +  0.00 sys =  3.54 CPU) @ 2824858.76/s (n=10000000)
           Rate outer state
outer 2702703/s    --   -4%
state 2824859/s    5%    --

何回かやってみたが若干stateの方が速い程度。


そういえばこれPerl5.14.2だった。


Perl5.16.2にして試した。

Benchmark: timing 10000000 iterations of moose, outer, state...
     moose: 133 wallclock secs (132.49 usr +  0.08 sys = 132.57 CPU) @ 75431.85/s (n=10000000)
     outer:  6 wallclock secs ( 6.34 usr +  0.00 sys =  6.34 CPU) @ 1577287.07/s (n=10000000)
     state:  6 wallclock secs ( 6.31 usr +  0.00 sys =  6.31 CPU) @ 1584786.05/s (n=10000000)
           Rate moose outer state
moose   75432/s    --  -95%  -95%
outer 1577287/s 1991%    --   -0%
state 1584786/s 2001%    0%    --

うーん全体的に5.14.2より遅くなった感じだろうか。

まとめ

  • stateはそろそろ使い慣れていきたい
  • 速度より大事なこともある。デザパタ学習とか。