2009-05-28 2 views
1

.NETテクノロジで実行されるすべてのアプリケーションのパフォーマンス分析と最適化にどのようなテクニックを使用すべきですか?
また、どのような種類のデバッグ/トレース技術が強力であることがわかっていますか?
カスタムのデバッグ/診断クラスを持つために大規模なプロジェクトが必要だと思いますか?
アプリケーションプロファイラやその他のサードパーティアプリケーションの使用をお勧めしますか?.NETデバッグとトラッキングパフォーマンス:トリック/隠し機能?

もう1つの関心事はかなり関連しています。メソッドの実行に要する時間はどのようにして取得できますか?

答えて

1

これは言語に依存しないアドバイスです。既存のアプリ、特に大きなアプリの数がexperience doing performance tuningになると、私が学んだことを知ることができます。パフォーマンスの最大の犠牲者は、過剰設計です。抽象化、通知駆動型処理などのレイヤーが多すぎます。問題は、あなたの人生を簡単にしてくれるはずの小さなものが抽象的に、あなたを知らずに大きなサイクルを無駄にしてしまうことです。 NGENサービス(NGENを使用して

1

これはしかし、ここで非常に一般的な質問です:)起動があなたの顧客にとって大きな関心事である場合、いくつかのガイドラインがアプリの

  1. 測定の起動時間です、NGENサービスの使用を検討しては、 .exe)は、コールドスタートアップのためにかなりの性能を持っています。
  2. WorkingsetとGCヒープ:あなたのGCヒープはどのように見えますか?特別にあなたのLOH。 CLRのLOHは圧縮されていないため、LOHを小さく保つか、LOH(85,000バイトを超えるオブジェクトを保持するラージオブジェクトヒープ)のオブジェクトを再利用するためにキャッシュ技術を使用することが重要です。
  3. スループット:あなたが行うことができますどのように多くの操作、それはそれはそれは..etc

については、サーバーアプリであれば、それは扱うことができますどのように多くの要求、ユーザ・インタフェースを持っている場合は、アプリの応答時間が何であります診断とトレースでは、TraceListnerのようなSystem.Dignostics名前空間のクラスを使用することができます。また、重要なコードパスのETWイベントを考慮することもできます(MSDNのイベントトレースには参考になります)。

System.Dignostics名前空間の組み込みクラスの上に独自のカスタムディグノスティッククラスを構築できます。

非常に便利なツールは、VSプロファイラーとCLRプロファイラーで時間プロファイリングとメモリプロファイリングがそれぞれ必要です。

あなたは、いくつかの選択方法のための時間を測定するストップウォッチクラスを使用することができ、または高解像度のタイミングのために、あなたはQueryPerformanceCounterのとQueryPerformanceFrequency窓のAPIを使用することができ、あなたの熱い関数の一般的な高レベルのアイデアを持っているプロファイラを使用することができます

関連する問題