4

Microsoft Word (2007 & 2010) 用のアドインを作成しています。アドインをコールド ブートで起動すると、遅延の問題が発生します。これは、マシンがシャットダウンされて再起動されることを意味します。その後、Word の最初の起動には約 30 ~ 35 秒かかります。その後の起動は高速です。

これは、ディスクからメモリへの VSTO および .NET dll の読み込みの遅延が原因である可能性があると考えました。これをテストするために、コードをまったく含まないダミーの Word アドインを作成しました。このアドインのみをロードしたコールド ブートでは、Word の起動に約 17 秒かかりました。

どうにかしてこのプロセスをスピードアップできますか? VSTO および .NET dll の読み込みを高速化する手法があれば、ぜひお寄せください。

4

2 に答える 2

2

アドインの読み込み時間に影響を与える可能性のあるレジストリ キーは 2 つあります:LoadBehaviorWarmup. それらについてはこちらをご覧ください。

LoadBehavior を 9 (ロード オン デマンド) に設定して、アドインが Word の起動時ではなく最初に使用されたときに読み込まれるようにして、Word の起動時間を短縮します。

ウォームアップを 1 に設定すると役立つ場合があります。これにより、アドインの前に .NET フレームワークと VSTO ランタイムが読み込まれ、「アドインを読み込む時間が短縮されます」。(個人的には、これがどの程度の効果をもたらすかはわかりません。私のアドインはとにかく高速に読み込まれるので、この設定を使用しても効果は見られませんでした。)

全体的に、アドインの読み込みに時間がかかるのは奇妙です。アドインの読み込み時に実行されるコード (コンストラクター、Load イベントなど) を注意深く確認することをお勧めします。

于 2012-05-18T15:23:38.993 に答える
2

これをテストするために、コードをまったく含まないダミーの Word アドインを作成しました。

これはあなたの理論の有効なテストではありません。コードがまったく含まれていないアドインでも、.NET Framework サポート DLL を読み込む必要があります。

実際のアドインの追加の依存関係を追加すると、必要な読み込み時間が 2 倍 (17 秒から 35 秒) になる理由が説明されます。

これは、.NET ソリューションの既知の "問題" です。.NET ランタイム環境がまだ読み込まれていない場合、最初の起動が比較的遅くなります。その後の起動時間ははるかに高速です。

assembly に対して NGEN を実行する以外に、これについてできることはあまりありません。これにより、コールド スタートの時間が少しは短縮されるかもしれませんが、それには別の結果が伴うため、当然のことながら単純なこととしてはお勧めしません。私の推奨は、コールドスタートを遅くするか、別のテクノロジーに切り替えることに慣れることです。

于 2012-05-18T11:17:17.070 に答える