2

C++/CLI を介して C#.NET 2.0 DLL でビルドされたインプット メソッド (IME) プログラムがあります。IME は常に別のアプリケーションに接続しているため、C#.NET DLL はイメージ アドレスのリベースを回避できないようです。

ngen を適用してその C#.NET 2.0 DLL のネイティブ イメージを作成し、グローバル アセンブリ キャッシュにインストールしましたが、あまり改善されず、約 12 秒かかりました。9秒まで。遅い PIII レベルの PC で。

したがって、起動時に C#.NET DLL によって参照されるすべてのコンポーネントをロードする小さなアプリケーションを使用して、その DLL のネイティブ イメージを "ウォームアップ" します。読み込み時間を 0.5 秒に短縮することは問題なく機能します。

しかし、それはしばらくの間しか機能しませんでした。約30分 後で、再び「クールダウン」するようです。

GAC またはネイティブ イメージの動作を常に「ホット」に制御する方法はありますか? これはまさにイメージアドレスのリベースの問題ですか?

4

1 に答える 1

0

フレームワーク ライブラリと CLR 自体が Windows キャッシュにある可能性が最も高いと思います。

バックグラウンドで待機しているだけの小さなアプリ、おそらく毎分ファイルに 1 バイトを書き込む (または、キャッシュに読み込まれたすべての関連ファイルを保持するのに十分なアクティビティを提供する他の無意味なタスク) が、保持するのに十分であることに気付くかもしれません。 「暖かい」もの。

少なくとも試してみる価値はあります。書くのにそれほど時間はかかりません。

于 2009-09-14T19:27:43.563 に答える