私たちのアプリケーションは、再起動 (コールド スタート) 後、一度開いた場合 (ウォーム スタート) よりもはるかに長い時間がかかります。
ほとんどの場合 (すべてではないにしても)、違いは DLL のロードにあるようです。DLL がキャッシュされたメモリ ページにある場合、はるかに高速にロードされます。ClearMemを使用して再起動をシミュレートしようとしましたが (実際の再起動よりも時間がかからないため)、さまざまな結果が得られました。
私の質問を要約すると:
- コールド スタートとウォーム スタートで起動時間の違いを経験したことはありますか?
- そのような違いをどのように扱ってきましたか?
- 確実に再起動をシミュレートする方法を知っていますか?
編集:
コメントの説明:
- アプリケーションはほとんどネイティブ C++ であり、一部の .NET が含まれています (ロードされた最初の .NET アセンブリが CLR の費用を負担します)。
- ロード時間の改善を目指しています。明らかに、プロファイリングの分担を行い、コード内のホットスポットを改善しました。
忘れていたのは、すべてのバイナリを再ベース化することで改善が得られたため、ローダーがロード時にそれを行う必要がなくなったことです。