8

私が欲しいもの

Python プロジェクトの一連のベンチマークを作成したいと考えています。新しいコードを導入すると、これらのベンチマークのパフォーマンスが変化することを確認したいと思います。Python をテストするのと同じ方法でこれを行いたいと思います。ユーティリティ コマンドのようなものを実行しnosetests、きれいにフォーマットされた読み取り値を取得します。

私が好きなことnosetests

このnosetestsツールは、ディレクトリ構造を検索して、名前が付けられた関数を検索し、含まれているtest_foo.pyすべての関数を実行しtest_bar()ます。これらの関数をすべて実行し、例外が発生したかどうかを出力します。

bench_foo.pyすべてのファイルを検索し、含まれているすべての関数を実行しbench_bar()、それらのランタイムを報告する同様のものが欲しいです。

質問

そのようなツールは存在しますか?

そうでない場合、いくつかの良い出発点は何ですか? ソースの一部はnoseこれに適していますか?

4

2 に答える 2

4

nosetestsあらゆる種類のテストを実行できるため、機能、入力/出力の有効性などをテストするか、パフォーマンスやプロファイリング (またはその他の必要なもの) をテストするかを決定できます。Python Profilerは優れたツールであり、Python のインストールに付属しています。

import unittest
import cProfile

class ProfileTest(unittest.TestCase):
    test_run_profiler:
        cProfile.run('foo(bar)')
        cProfile.run('baz(bar)')

テストに行を追加するか、プロファイリングするすべての呼び出しのテスト ケースにテストを追加するだけで、メイン ソースがテスト コードで汚染されることはありません。

すべてのプロファイリング情報ではなく、実行時間を測定するだけの場合は、timeitも便利なツールです。

于 2013-10-06T14:41:02.737 に答える