2009-06-25 10 views
6

私は、約5つの参照されたアセンブリ(私たちによって書かれたもの)と約8つの参照されたアセンブリをサードパーティが持っているWinFormsアプリケーションに取り組んできました(将来何かが起こらない限りひどく間違った - Infragistics/DevExpressコンポーネント!)。NGenとGacutilのベストプラクティス

私たちの起動時間は、コールドブーツで少し高すぎます。私はGacにそれらを追加して、それらをngen'ingすることが行く方法であるかと思います。

私たちがNGenキャッシュにインストールしているときに、gacにも入る必要がありますか? 2人の関係は何ですか?どちらを目指すべきですか?私たちは1つのexeを持っていますが、私はILMergeをやっていますが、私たちのシナリオではうまくいくかどうかはわかりません。 Javaアプリケーションが行うのとほぼ同じよう

+1

遅れを先に引き起こしている原因を調べるには、プロファイラを使用して掘り出し物を丸ごと取りに行きたいかもしれません。 ANTS(RedGateによる)は良いものです。 – Pondidum

答えて

0

はあなたの問題定義は何とか

☺あなたのソリューションを暗示しているように私には聞こえ(Netbeansのように!) -

また、私のexeファイルを取っているどのくらいのメモリを取得することも可能です

つまり、起動時間はアセンブリの読み込みから来ていることをどのように知っていますか?

あなたがすべきことは、アプリをプロファイルして、そのようにすることです。可能ですが、初期化が行われていて、間違った場所を最適化することに集中している場合はどうなりますか?

Hereアンマネージドアプリケーションのプロファイリングに役立つツールがいくつかあります。

あなたはWinformsアプリケーションについて話しているので、私はあなたにはVisual Studioがあると仮定します。その場合は、管理対象アプリにits profilerを使用できます。

幸運を祈る!

0

.NET Framework 3.5 SP1を使用していない場合は、そのプラットフォームでベンチマークを行い、違いがあるかどうかを検討する必要があります。 CLR Optimizations In .NET Framework 3.5 SP1

This articleには、一般的なガイドライン、ngenのベストプラクティス、およびアセンブリのリベースを回避するトリックもあります(ただし、参照している5つのアセンブリについては作業していますがと、奇跡を期待しないでください)。

しかし、他の場所で簡単に修正するのではなく、特定のアプリケーションの特定のボトルネックを突き止めることで、起動時間が大幅に短縮される可能性があります。

4

起動時間を改善するための主なアイデアは、可能な限り遅延初期設定を使用することです。起動直後に不必要なものをインスタンス化しないでください。 lazy initパターンを使用してください。非クリティカル初期化を行うためにメインフォームを表示した後にバックグラウンド初期化ワーカーを開始することもできます。その他、

article (Improving Application Startup Time)も確認できます。

+1

+1アプリケーションの起動時間を改善するためのCLR Inside Outの記事。非常に役立ちます。 (あなたはハイパーリンクに記事のタイトルを入れておくべきですが、私はそれをほとんどクリックしませんでした)。 – dthrasher

関連する問題