.NET 3.5 SP1 では、信頼できる場所から取得したアセンブリの厳密な名前を検証しなくなるため、起動時のパフォーマンスが向上します。私の本では少し物議をかもしていますが、やや擁護できます。
CLR の 64 ビット バージョンもこの時間のかかる手順をバイパスするかどうかを確認しました。DLL に署名し、GAC に入れ、1 バイトにパッチを当てました。アセンブリをロードするときに苦情はありません。したがって、違いを説明するのは SP1 の起動環境の改善ではありません。
起動時間のその他の要因は次のとおりです。 - ディスクからの CLR の読み込み (コールドスタートのみ) - 依存アセンブリの Groveling - 起動コードの JIT コンパイル
コールドスタートが要因である可能性があります.CLRの64ビットバージョンがロードされている他のプロセスが実行されていない可能性があります. テスト中にダミーの .NET アプリを実行することで、簡単に排除できます。
同じ理由で、アセンブリをうろついても時間がかかる場合があります。.NET アセンブリの 64 ビット ngen-ed イメージがファイル システム キャッシュにある可能性はほとんどありません。繰り返しになりますが、同じアセンブリに依存するダミー アプリを使用すると、簡単に削除できます。
64 ビットの JITter は非常に難しい問題です。恣意的な呼び出しは、MSFT が 32 ビット JITter ほどパフォーマンスの高いものを作るのに多くの時間を費やさなかったと仮定することです。ただし、証拠によって裏付けられるものは何もありません。測定も難しく、Assembly.Load でアセンブリをロードしてから、クラス コンストラクターが可能な限り多くのコードを呼び出す Activator.CreateInstance() の時間を計測する必要があります。