アセンブリの数と起動時のパフォーマンス

とりあえず、わかっていることをまとめます。

起動時のシーケンスで複数のアセンブリを経由してデフォルトの処理を行っている。やっぱりこれが原因で遅そうだ。MSのドキュメントにもワーキングサイズを小さくするには、アセンブリの数を減らすように書いているがその通りである。ためしに、以下のようなプログラムをWidowsFormで書いてみた。

・アプリケーションA
自作のFormクラスの中に、"555"という文字列を返すメソッド(GetString)を実装。
スタートボタンが押されたタイミングでメソッドを実行。
メソッドの実行にかかった時間を計測して表示。
・アプリケーションB
自作のFormクラスの中から、別のアセンブリ(ChildAssembly1とします)の中のChild1にあ
る文字列取得メソッド(GetString)を呼び出します。Child1のGetStringは別のアセンブリ
(ChildAssembly2とします)の中のChild2にある文字列取得メソッド(GetString)を呼び出
します。以下同様に、ChildAssembly10まで文字列取得メソッドを呼び出し、最後の
GetStringで文字列"555"をリターンします。
メソッドの実行にかかった時間を計測して表示。

アプリケーションAとアプリケーションBでは実行することは一緒なのに、アプリケーションAの実行時間0(マイクロセカンド:msを単位としているので切り捨てられているはずです)に対して、アプリケーションBは150(ms)ぐらいかかる。もちろん、1度起動して再
起動すると30(ms)ぐらいにはなるけど、これだって馬鹿にならないコストだ。