Moose :: Cookbook :: FAQ:を参照してください。
ムースが遅いと聞きましたが、本当ですか?
繰り返しますが、これはトリッキーなので、はい、いいえ。
第一に、人生で無料のものはなく、Mooseの機能の中には他の機能よりもコストがかかるものがあります。また、Mooseのポリシーでは、使用した機能に対してのみ課金し、使用していない機能のコードの実行に余分な負担をかけないように最善を尽くします。もちろん、Moose自体の使用にはある程度のオーバーヘッドが伴いますが、ほとんどの場合、コンパイル時間です。この時点で、必要な速度を得るために利用できるいくつかのオプションがあります。
現在、速度を上げる手段として、クラスを不変にするオプションを提供しています。これは、コンパイル時間のコストがわずかに大きくなることを意味しますが、実行時の速度の向上(特にオブジェクトの構築)はかなり重要です。これは、次のコードで実行できます。
MyClass->meta->make_immutable();
Class::MOPのホットスポットを定期的にXSに変換しています。FlorianRagwitzとYuvalKogmanは現在、アクセサーとインスタンスを直接Cにコンパイルする方法に取り組んでいます。これにより、誰もが非常に高速なOOを楽しむことができます。
一方、私はDancerとMooseを使用するWebアプリケーションに取り組んでいます。アプリケーションはHTTPDデーモンとして実行されているため、サーバーが初期化されると、これは実際には関係ありません。限られたハードウェアまたは仮想サーバーでの私の要件に対して、パフォーマンスは十分すぎるようです。
このプロジェクトにMooseとDancerを使用すると、私の小さなデモアプリケーションが約5,000行から1,000行未満に縮小されるという追加の利点があります。
アプリに依存させたいものの量は、考慮しなければならないトレードオフの1つです。CGIアプリは、依存関係を制限することで応答性が向上します。