Hatena::Groupcatalyst

dann@catalyst このページをアンテナに追加 RSSフィード

2008-05-03

Mooseのパフォーマンス測定 Class::Accessor::Fast vs Moose

Mooseのパフォーマンス測定 Class::Accessor::Fast vs Moose - dann@catalyst を含むブックマーク はてなブックマーク - Mooseのパフォーマンス測定 Class::Accessor::Fast vs Moose - dann@catalyst Mooseのパフォーマンス測定 Class::Accessor::Fast vs Moose - dann@catalyst のブックマークコメント

http://code2.0beta.co.uk/moose/svn/Moose/trunk/benchmarks/caf_vs_moose.pl

  • setterは実行回数たりねーと怒られた.
  • getterは大差なし
  • インスタンス生成は、かなり差がある。最大100倍くらい遅い
  • Destructionもかなり差がある

現状だとインスタンス作る場合には、mata->make_immutableしておいたほうがいいってこと。CGIで使うには無理がありそうだけど、そうじゃなきゃいけそうだなぁと。

DIコンテナでScopeSingletonにしといて、startupタイミングでインスタンス作っとけば、実用上は問題ないかな。

hasとかで委譲したときに、どうなるかとかは測っておいたほうがいいかも。

SETTING
Benchmark: timing 100000 iterations of ClassAccessorFast, Moose, MooseImmutable, MooseImmutableNoConstructor...
ClassAccessorFast: 0.102277 wallclock secs ( 0.11 usr +  0.00 sys =  0.11 CPU) @ 909090.91/s (n=100000)
            (warning: too few iterations for a reliable count)
     Moose: 0.109756 wallclock secs ( 0.11 usr +  0.00 sys =  0.11 CPU) @ 909090.91/s (n=100000)
            (warning: too few iterations for a reliable count)
MooseImmutable: 0.110045 wallclock secs ( 0.11 usr +  0.00 sys =  0.11 CPU) @ 909090.91/s (n=100000)
            (warning: too few iterations for a reliable count)
MooseImmutableNoConstructor: 0.108017 wallclock secs ( 0.11 usr +  0.00 sys =  0.11 CPU) @ 909090.91/s (n=100000)
            (warning: too few iterations for a reliable count)
                                Rate MooseImmutableNoConstructor MooseImmutable Moose ClassAccessorFast
MooseImmutableNoConstructor 909091/s                          --             0%    0%               -0%
MooseImmutable              909091/s                          0%             --    0%               -0%
Moose                       909091/s                          0%             0%    --               -0%
ClassAccessorFast           909091/s                          0%             0%    0%                --

GETTING
Benchmark: timing 100000 iterations of ClassAccessorFast, Moose, MooseImmutable, MooseImmutableNoConstructor...
ClassAccessorFast: 0.0776682 wallclock secs ( 0.08 usr +  0.00 sys =  0.08 CPU) @ 1250000.00/s (n=100000)
            (warning: too few iterations for a reliable count)
     Moose: 0.0701921 wallclock secs ( 0.07 usr +  0.00 sys =  0.07 CPU) @ 1428571.43/s (n=100000)
            (warning: too few iterations for a reliable count)
MooseImmutable: 0.0723972 wallclock secs ( 0.08 usr +  0.00 sys =  0.08 CPU) @ 1250000.00/s (n=100000)
            (warning: too few iterations for a reliable count)
MooseImmutableNoConstructor: 0.0714548 wallclock secs ( 0.08 usr +  0.00 sys =  0.08 CPU) @ 1250000.00/s (n=100000)
            (warning: too few iterations for a reliable count)
                                 Rate MooseImmutable MooseImmutableNoConstructor ClassAccessorFast Moose
MooseImmutable              1250000/s             --                         -0%               -0%  -13%
MooseImmutableNoConstructor 1250000/s             0%                          --                0%  -12%
ClassAccessorFast           1250000/s             0%                          0%                --  -12%
Moose                       1428571/s            14%                         14%               14%    --

CREATION
Benchmark: timing 100000 iterations of ClassAccessorFast, Moose, MooseImmutable, MooseImmutableNoConstructor...
ClassAccessorFast: 0.455661 wallclock secs ( 0.46 usr +  0.00 sys =  0.46 CPU) @ 217391.30/s (n=100000)
     Moose: 50.7327 wallclock secs (50.71 usr +  0.03 sys = 50.74 CPU) @ 1970.83/s (n=100000)
MooseImmutable: 0.509074 wallclock secs ( 0.52 usr +  0.00 sys =  0.52 CPU) @ 192307.69/s (n=100000)
MooseImmutableNoConstructor: 7.42216 wallclock secs ( 7.41 usr +  0.01 sys =  7.42 CPU) @ 13477.09/s (n=100000)
                                Rate  Moose MooseImmutableNoConstructor MooseImmutable ClassAccessorFast
Moose                         1971/s     --                        -85%           -99%              -99%
MooseImmutableNoConstructor  13477/s   584%                          --           -93%              -94%
MooseImmutable              192308/s  9658%                       1327%             --              -12%
ClassAccessorFast           217391/s 10930%                       1513%            13%                --

DESTRUCTION
Benchmark: timing 100000 iterations of ClassAccessorFast, Moose, MooseImmutable, MooseImmutableNoConstructor...
ClassAccessorFast: 0.0550349 wallclock secs ( 0.04 usr +  0.00 sys =  0.04 CPU) @ 2500000.00/s (n=100000)
            (warning: too few iterations for a reliable count)
     Moose: 0.299493 wallclock secs ( 0.30 usr +  0.00 sys =  0.30 CPU) @ 333333.33/s (n=100000)
            (warning: too few iterations for a reliable count)
MooseImmutable: 0.149003 wallclock secs ( 0.16 usr +  0.00 sys =  0.16 CPU) @ 625000.00/s (n=100000)
            (warning: too few iterations for a reliable count)
MooseImmutableNoConstructor: 0.142484 wallclock secs ( 0.14 usr +  0.00 sys =  0.14 CPU) @ 714285.71/s (n=100000)
            (warning: too few iterations for a reliable count)
                                 Rate Moose MooseImmutable MooseImmutableNoConstructor ClassAccessorFast
Moose                        333333/s    --           -47%                        -53%              -87%
MooseImmutable               625000/s   87%             --                        -13%              -75%
MooseImmutableNoConstructor  714286/s  114%            14%                          --              -71%
ClassAccessorFast           2500000/s  650%           300%                        250%                --

ka-nachtka-nacht2008/05/04 23:11ftpluginにしているならば:autocmdのパターンは*でなく<buffer>を指定し、各種:mapには<buffer>を指定すべきです。
今の記述では'filetype'がperlなバッファを開かれた際に各種設定が全バッファに対して有効になります。特に:autocmdは'filetype'がperlなバッファを開くたびに同じものが追加されていくのでバッファの保存時に同じ動作が複数回行われることになります。

danndann2008/05/05 02:29おぉ、ありがとうございます。

SevenSeven2011/12/30 11:35Good to see real expertise on dipslay. Your contribution is most welcome.

lnuadjvlnuadjv2011/12/30 19:298VZuNg <a href="http://xdgfwxgfsesx.com/">xdgfwxgfsesx</a>

atabaoatabao2011/12/31 22:27AejGt0 , [url=http://jzqszuxdfpva.com/]jzqszuxdfpva[/url], [link=http://qadlawxatmqq.com/]qadlawxatmqq[/link], http://udyntwmlzejv.com/

iumuxzhfiumuxzhf2012/01/02 02:59NXCef8 , [url=http://bqzxitpxnvhn.com/]bqzxitpxnvhn[/url], [link=http://khtunmodqxym.com/]khtunmodqxym[/link], http://iovvsttbnacz.com/