Mooseの速度が遅いという議論のまとめと感想
Adam Kennedy (ADAMK)が「Array::CompareでMooseを使わないようにしてくれ」とRTでチケットを作成したことがきっかけとなり,Mooseの速度について議論が起きています。以下ラフなまとめ。
- #49270: Remove the use of Moose - RT
- Moose or No Moose - Perl Hacks (Array::Compareの作者ブログ)
- Re: Moose Or No Moose - Stevan Little's Blog
- ADAMKのいうことは分からんでもない。それでもMooseは使う価値がある。Moose高速化計画も進んでいることだし。
- On Moose and Speed - A Foolish Manifesto
- Mouseという手もあるが,Moose開発メンバーは「MouseよりMoose使って」って言ってるからなあ。今後に期待したいのが,MooseX::AntlersというMooseの機能をMouseの速度で提供する計画だな。
Moose高速化計画に関して言えば,ある程度改善はされるものの,おそらくMouse並にはならない*1でしょう。とはいえやはり遅いのは非常に大きな欠点なので,もう少し頑張りたいところです。MooseX::Antlersにも期待します。
そもそも,他のモジュールのスタートアップがプログラムのコンパイルだけであるのに対して,Mooseコア/アプリケーションではコンパイルの他に大量のメタオブジェクトの生成しなければならないので,時間がかかるのも当然と言えます。
それではコマンドラインアプリケーションとして使用に耐えないかというと,そうでもないんじゃないでしょうか。いくつかのPerlアプリケーションを見てみると,ack(1)の50ms,prove(1)の90ms,perltidy(1)の300ms, cpan(1)の300msに対して,Mooseを使っているre.pl(1)の370msは確かに遅いんですが,絶望的に遅いというわけでもないのでこんなものかな,とも思います。
(追記)
さっそくNishinoさんが「Moose or No Moose」を翻訳しています。
(追記 2)
議論はその後も続いています。時間があれば要約します。
- Take arms against a sea of troubles - The room
- Re: Re: Moose Or No Moose - Stevan Little's Blog
- Moose Startup Time over Time - Stevan Little's Blog
- Command Line Moose or Knowing what You Don't know. - The room
- Moose, Padre, and why the burden of proof is on the cultists - Journal of Alias
- To Moose Or Not To Moose - D-6
- Re: Re: Re: Moose Or No Moose - Stevan Little's Blog
*1:今作成中のすべてのブランチがマージされたとしても,まだMouseよりはるかに遅い。ただし,XS化しているため実行速度はMouseを凌駕する。