現在オフラインです。再接続するためにインターネットの接続を待っています

64 ビットの .NET Framework アプリケーションの起動に時間がかかる

現象
64 ビットの .NET Framework アプリケーションでは、32 ビットの場合と比べ、アプリケーションの起動までに時間がかかる場合があります。
原因
製品の制限事項となります。

.NET Framework は、アプリケーションの実行時に、 ジャストインタイム (JIT) コンパイラ処理によってオン デマンドでアセンブリ内の MSIL コードをネイティブ イメージに変換します。

x64 環境上での JIT コンパイル処理では、内部処理の実装上、主に最適化処理を行うため、メソッド (IL コード) のサイズが増大するにつれてより多くのメモリを消費する傾向があります。

そのため、メモリの増加と共に、メモリマネージメントのオーバーヘッドが増え、結果として動作速度に影響を及ぼします。

起動時にロードするアセンブリに、分岐処理やプロパティの初期化処理を大量に含んでいたり、 フォーム上に多くのコントロールが張り付けられていたりする場合には、起動に要する時間の増大が顕著になります。

回避策
方法 1. ネイティブ イメージ ジェネレータ (Ngen.exe) を利用し、事前にネイティブ イメージを生成する

Ngen コマンドを利用し、事前にアセンブリをコンパイルすることにより、起動時間を短縮できます。
なお、Ngen.exe の実行時間についても、同様の理由により x64 環境上では増大することがあります。


方法 2. アプリケーションの実装を変更し、起動時の JIT コンパイル処理を軽量化する

アプリケーションの構成を見直し、初期画面では必要ないコントロールやメソッドの実装を別のアセンブリに分離することで、アプリケーション起動時に必要な JIT コンパイラの処理量が低減され、起動時間の改善が見込まれます。

詳細
Ngen.exe (ネイティブ イメージ ジェネレーター)
http://msdn.microsoft.com/ja-jp/library/vstudio/6t9t5wcf.aspx
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2833666 - 最終更新日: 04/01/2013 07:16:00 - リビジョン: 2.0

Microsoft .NET Framework 2.0 Service Pack 2, Microsoft .NET Framework 3.0 Service Pack 2, Microsoft .NET Framework 3.5 Service Pack 1, Microsoft .NET Framework 4.0, Microsoft .NET Framework 4.5

  • kbdeployment kbsetup kbhowto KB2833666
フィードバック