1

開発中のソフトウェアの診断を実行するための優れた (できればプラグ アンド プレイ) ソリューションを探しています。私が取り組んでいるソフトウェアには、大規模なコンピューティング リソースを必要とするコンポーネントがいくつかあります。そのため、これらのコンポーネントのパフォーマンスを取得しようとしています。その理由は次の 2 つです。1) 必要なコンピューティング リソースとソフトウェアの実行コストを見積もる。2)コンポーネントの「改善」が何であるかを定量化します (つまり、コードを変更して速度が向上した場合、それは改善です)。私たちのアプリケーションは検索エンジンと他の多くのコンポーネントで構成されており、検索エンジンの速度を理解することもエンドユーザーにとって重要です。

問題を適切に定義する方法がわからないため、解決策を探すのは難しいようです。しかし、私がこれまでに見つけたのは、基本的なエラー ログのテクニックのようです。データから統計 (統計回帰など) を実行することを目的とするソリューションが最適です。単体テスト フレームワークには組み込みのテスト タイマーがあるかもしれませんが、さまざまなシナリオを考慮して、アプリケーションのライブ実行からデータを取得する必要があります。

したがって、実際には2つの質問があります。

1) この種のテスト用に定義済みのソリューションはありますか?

2) この種のデータに対して統計的回帰を実行するための適切なリファレンスはありますか? スクリプトの実行時間と入力データ (クエリなど) のサイズをキャプチャしたとします。データ サイズの変更が実行時間に及ぼす影響を理解するために、データ サイズの時間を回帰できます。しかし、関連するすべての変数が何であるかが明確ではないため、この種の回帰は注意が必要です。パフォーマンス データの分析に関する参考資料はどれも優れており、多くの人にとって有益であると私は信じています!

ありがとうマット

4

1 に答える 1

0

このような大規模なアプリでは、多くの非 CPU 処理が行われるため、最適化ポイントを見つける には、CPU ベースではなくウォール クロック ベースのサンプリングが必要になります。

gprofやその他の一部は CPU 時間でのみサンプリングするため、不要な I/O やその他のシステム コールを確認できません。CPU を集中的に使用するパフォーマンスの問題を見つけて取り除くことができたとしても、I/O を集中的に使用する問題は時間の大部分になるだけです。

ズームを見てください。コードの行ごとに、その行がスタック上にある実時間の割合を報告するスタック サンプラーです。最適化する価値のあるコード ポイントは、おそらくそのような行です。また、コール グラフをブラウズするための素敵なバタフライ ビューもあります。(全体としてコール グラフは必要ありません。無意味なネズミの巣になります。)

于 2011-05-20T17:26:18.390 に答える