0

同様の質問がすでにここで行われていることを知っています。C#/。NETプロファイラーにはどのような機能が必要ですか?しかし、このスレッドは、ウィッシュリストだけでなく、そのウィッシュリストの実装方法についても説明しています。

では、もう一度お聞きします。私は一般的なパフォーマンスプロファイラーを構築中です。dllを入力として受け取り、通常のStopwatchアプローチを使用して、そのdllのメソッドの応答時間をプロファイリングできることを知っています。しかし、これは非常に基本的なことです。私はサードパーティのAPIを使用して(または自分でコードを実行して)、そのdllから入手できる有用な情報を抽出します。私はそれを遅くするすべてを知りたいです。メモリリークについて知りたいのですが。アプリケーションのボトルネックを見つけるのに役立つものは何でもあります。高価なdb操作を見つけるために同様のアプローチが必要です。しかし、これらすべてを1つのアプリケーションで実行できます。

では、どのようなアプローチを提案しますか?プロジェクトで使用できるように、どのツールを傘下に置くことができますか?

dllなどの一般的な入力を受け取り、ソースコードツリー(ソリューション、プロジェクト、.csファイル)として入力を受け取り、応答時間の形式で結果を出力し、ボトルネック、メモリリークを特定できる「単一の」アプリケーションを作成したいと思います。 、など。

4

1 に答える 1

1

アプリケーションのボトルネックを見つけるのに役立つものは何でもあります。

測定値がボトルネックの場所に間違いなくつながるという普遍的なプロファイリングの仮定に注意してください。ボトルネックの一部はそのように見つけることができますが、一部だけです。

その後、残りのボトルネックは不必要に時間を費やしてそこにとどまりますが、プロファイラーの測定ではそれらを分離しなかったため、開発者はそれらに気づいていません。

簡単な例は、検索される単語が非常にランダムでないことを除いて、最適と思われるある種の辞書検索である可能性があります。特定の単語がはるかに頻繁に検索される場合、それは最適化の機会を表しますが、データについて何かを知る必要があることを検出します。測定プロファイラーは、プログラムのデータを確認しません。

より極端な例は、あらゆる種類のインタプリタであり、そのデータは別の言語の「命令セット」です。ボトルネックは他の言語で簡単に発生する可能性がありますが、データであるため、測定プロファイラーはボトルネックを認識しません。

この種の問題が見られるのは、測定ではなく、プログラムの状態の少数のサンプルであり、開発者は各サンプルのコンテンツ(コールスタックとデータ)を完全に調べて特性を評価できます。これにより、メソッドに測定値を設定したり、コールグラフを参照したりするよりも、プログラムが時間を費やしている方法と理由をよりよく理解できます。

于 2012-05-16T20:40:18.970 に答える