1

私のお気に入りのプロジェクトの一環として、Python でのコードのさまざまな実装のパフォーマンスをテストする必要があります。これは私が頻繁に行うことであり、この目的に役立つように記述したコードを、できるだけ簡単に更新および変更できるようにしたいと考えています。

現時点ではまだ初期段階ですが、文字列を使用して一般的なセットアップまたはテスト コードを管理するようになりました。

naiveSetup = 'from PerformanceTests.Vectors import NaiveVector\n' \
+ 'left = NaiveVector([1,0,0])\n' \
+ 'right = NaiveVector([0,1,0])'

これにより、コードを 1 回しか記述できなくなりますが、その代償として、コードが読みにくくなり、更新が煩雑になります。

より良い方法はありますか?

4

2 に答える 2

3

三重引用符 """ を使用する

setup_code = """
  from PerformanceTests.Vectors import NaiveVector
  left = NaiveVector([1,0,0])
  right = NaiveVector([0,1,0])
"""

別の興味深い方法が のドキュメントで提供されていtimeitます。

def test():
    "Stupid test function"
    L = []
    for i in range(100):
        L.append(i)

if __name__=='__main__':
    from timeit import Timer
    t = Timer("test()", "from __main__ import test")
    print t.timeit()

これはすべてのニーズに適しているわけではありませんが。

于 2010-01-01T07:42:38.903 に答える
0

タイミングコードは問題ありませんが、何が起こっているのか推測する必要があります.

実際に何が起こっているのかを調べるには、デバッガーでランダムに数回手動で一時停止し、コール スタックを調べます。

たとえば、ある実装では別の実装よりも 30 倍遅いコードでは、スタックの各サンプルが 96.7% の確率で余分な時間を費やしているため、その理由がわかります。

当て推量は必要ありません。

于 2010-01-01T16:45:12.653 に答える