2

「パフォーマンス アサーション チェック」システムの設計に関する意見はありますか?

アイデアは、開発者が自分のコードについていくつかのアサーションを作成し、これらを使用してコードのパフォーマンスの進化をテストするというものです。そのようなシステムでの経験は何ですか?

私の現在のブロックは、「指定された言語 (指定されたログまたはランタイム インストルメンテーションに対してチェックされる) で記述されたこれらのアサーションを、CLR、実行可能なアセンブリまたはバイトコードなどに変換するより良い方法は何ですか?」です。

現在、仕様を解析してデータ構造に保持するパーサーを作成しました。

4

3 に答える 3

3

アプリケーションにパフォーマンス チェックを組み込みますか? いいえ。理由は、パフォーマンス チェック自体に時間がかかり、アプリケーションがパフォーマンスに非常に敏感であるためです。

代わりに、パフォーマンス チェックをテストにします。そのために、NUnit を使用します。ナイトリー ビルドでは、テストを実行し、詳細なタイミング データと、要件に応じて合格/不合格を示すログを生成します。ベータ版と製品版のリリースでは、ログをしばらく保持しているため、長期にわたってパフォーマンスを追跡することもできます。

于 2008-10-03T05:54:43.127 に答える
1

Kevin と同様に、自動回帰テストにパフォーマンス ログを入れて、機能だけでなくパフォーマンスも効果的に回帰テストできるようにしています。自動回帰にはTestCompleteを使用し、多くのことを自動的に行います。手動で追加する主な理由は、各チェックポイントで今回の実行と前回の実行の結果を比較することです。これは次のように機能します

StartTest
InitialiseCounter
'
'
Do some testing
'
'
CheckPoint
GetElapsedTime
Compare ElapsedTime with stored elapsed time from last run
If difference is outside tolerence log an error

(私の疑似コードの危険な強調表示を許してください)

于 2008-10-03T06:09:47.240 に答える
0

現在、多くの言語にはassertステートメントがあります。それらを利用して、生成されたアサーションを検証できますか? それらは書きやすく、見つけやすいです。問題は、アサーションの失敗がプログラムの停止を意味することです。

実行時にアサーションが失敗したという警告またはログ エントリを提供する場合は、if ステートメントを試すことができます。

この種のコード生成では、単純なテンプレート ツールを使用して、アプリケーションに挿入できる適切なソースを生成することがよくあります。Java の Velocity または Python の Mako を見て、アサーション条件のソースを生成できます。

于 2008-10-03T10:10:46.000 に答える