最近、Microsoft の Composite UI Application ブロックで構築されたアプリケーションのパフォーマンスの問題、特に読み込みに時間がかかりすぎる問題のトラブルシューティングを依頼されました。
これは、リフレクション/属性を使用してクラスを登録する Microsoft の ObjectBuilder 依存性注入フレームワークを中心に構築されています。プロファイリングは、ObjectBuilder が登録するものを検索する際に読み込まれたすべてのアセンブリのすべての型をスキャンするため、起動時にアプリがリフレクションにかなりの時間を費やしていることを示しました。
代替の DI フレームワークはすべて、属性、XML 構成、または純粋なコードも使用しているようです。
他の属性ベースのフレームワークがこれ以上優れているとは思えません。また、大量の XML を解析する必要がある起動時間などについても懐疑的です。
純粋なコードベースのフレームワークは、はるかに高速であるように見えますが、柔軟性もはるかに低いため、明確な良い選択があるようには見えません...
これにより、DI コンテナーのベンチマークを検索するようになりましたが、見つけることができたのはhttp://www.codinginstinct.com/2008/04/ioc-container-benchmark-unity-windsor.htmlだけです。
これは優れたベンチマークですが、コンテナーを使用して 100 万個のオブジェクトをどれだけ速く作成できるかを測定するだけです。私は 100 万個のオブジェクトを作成することに興味はありません。アプリをできるだけ早く起動したいだけなので、探しているのは DI コンテナーの起動コストに関する情報です。ブログの投稿、逸話、または「ObjectBuilder を高速化する方法は次のとおりです」と簡単です。
前もって感謝します