0

カスタム ドメイン固有言語 (DSL) と、他のプロファイラー (現在のスタック トレース、包含サンプル、排他サンプルなど) と同様のデータ フィードを生成するサンプリング パフォーマンス プロファイラーがあります。プロファイラーの結果をよりよく視覚化するために既存の GUI を活用しようとしていますが、この方法でプラグ可能/拡張可能なものを見つけることができませんでした。

また、DSL はコンピューティング クラスターで実行されるため、単一ノードまたは複数ノードのデータを同時に細かく分割できる GUI が理想的です。最終的にはビジュアルスタジオに統合したいと思っていますが、現時点では何でも喜んでいます. ご提案いただきありがとうございます。

ロブ

4

1 に答える 1

1

自分の目的に活用できるようなUIを見つけることができるかどうかは疑問です。

ただし、 Zoomのものとは異なり、または私が数年前に行ったように、通常はバタフライビューと呼ばれますが、コード行の場合は関数ではなく、作成するのはそれほど難しいことではありません。

ここに画像の説明を入力してください

プログラミングは簡単です。いくつかのスタックトレースがあり、各スタックトレースは一連のコード行で構成されています。ここで、コードの各行は、「一番下の」行を除いて、関数の呼び出しを表します。100個のスタックトレースがあると仮定します。

この場合、どの時点でも、「フォーカス」である特定のコード行がありますfoo.cpp: 326。これ33%は、その行を含むスタックトレースの割合です(一部のトレースに行が複数回表示されている場合でも)。そのパーセントは、その行を削除できた場合に全体的にどれだけの時間を節約できるかということであり、それが責任を負っています。

これらの33個のスタックトレースgzorn.cpp: 99のうち、25個と8個のフォーカスラインの上に線が表示されると表示foo.cpp:105されます。(これは再帰の場合です。再帰がある場合は、祖先または子孫を合計してフォーカスラインと同じパーセントにする必要はありません。)

また、その行を通過する33個のスタックトレースについても説明します。そのうちの16個はbar.cpp:45次の行で、10個は、、bar.cpp:107個はbar.cpp:17です。

または、各行に、その行を通過するトレースの割合を表示することもできます。

次に、ユーザーは、これらの「隣接」のいずれかをクリックしてフォーカスを変更することにより、コストのかかるコード行を探すことができます。

これがプログラミングがいかに簡単であるかに注目してください。スタックトレース自体以外のデータ構造は必要ありません。また、統計を計算する必要もありません。さらに、スタックトレースを多数持つ必要はありません。これは、パーセントをより正確にするだけで、特に重要ではないためです。

PS私はほとんど言及するのを忘れました。スタックトレースは、CPU時間中だけでなく、I/Oまたはその他のブロックされた時間中にも取得する必要があります。多くの場合、I / O、スリープ、リソース待機などが原因でプログラムが遅くなる可能性があるため、これは重要です。そのことを知っておく必要があります。他のプロセスとの競合が原因で速度が低下することを心配している場合は、パーセントがあまり低下しないため、実際には問題にはなりません。

于 2012-05-22T12:37:16.633 に答える