0

.NET インプロセス COM サーバーに複数の AppDomains を作成する必要があります (これは Windows エクスプローラーの名前空間拡張です)。

私のテスト コンソール アプリケーションでは、40 秒で 10 個のドメイン + WPF ウィンドウを作成できましたが、これは受け入れられません。これを追加LoaderOptimization.MultiDomainHostすると、これが最大 2 ~ 5 秒短縮されますが、これは問題ありません。

ただし、MainCOM サーバーにはメソッドがなく、LoaderOptimization を指定してもAppDomainSetup2 つ以上の追加ドメインのロードにのみ影響します (つまり、最初の追加の AppDomain は 3 ~ 4 秒で開始し、その他は 0.1 ~ 0.3 秒で開始します)。

では、インプロセス COM サーバーを指定できますか? はいの場合、どのように指定できますか?LoaderOptimization

4

1 に答える 1

0

C#でコードを記述している限り、このオプションを設定することはできません。appdomainを構成できるように、CLRを自分でホストする必要があります。これには、C++コードが必要です。コアMSDNライブラリの記事セットはここから始まります

なぜそんなに時間がかかるのかを理解しようとすると、いくつかの結果が得られるはずです。確かに、ディスク上のアセンブリを初めて見つけるコストに関連するコールドスタートの問題のようには聞こえません。そのパフォーマンスヒットは、最初のappdomainにのみ関連します。後のアプリは、ファイルシステムキャッシュでアセンブリを見つけるため、迅速に処理する必要があります。

これは、ILをマシンコードにコンパイルするジャストインタイムに関連するウォームスタートの問題を残します。これに対する簡単な修正は、アセンブリでngen.exeを実行することです。

于 2012-05-14T13:42:15.740 に答える