セットアップに依存するコードの時間を計りたい。セットアップ コードは次のようになります。
>>> b = range(1, 1001)
そして、時間を計りたいコードは、漠然と次のようになります。
>>> sorted(b)
私のコードがソートとは異なる関数を使用していることを除いて。しかし、それは今重要ではありません。
とにかく、文字列を timeit に渡す限り、このコードの時間を計る方法を知っています。
>>> import timeit
>>> t = timeit.Timer("sorted(b)", "b = range(1, 1001)")
>>> min(t.repeat(3, 100))
setup callable を使用して stmt callable がアクセスできる名前空間に何かを入れるにはどうすればよいですか?
つまり、呼び出し可能オブジェクトを含む文字列ではなく、呼び出し可能オブジェクトを使用して、上記のコードと同じことを行うにはどうすればよいでしょうか?
ちなみに、ここでのより大きな目標は、単体テストのコードを再利用してパフォーマンスを測定することです。
import unittest
class TestSorting(unittest.TestCase):
def setUp(self):
self.b = range(1, 1001)
def test_sorted(self):
sorted(self.b)
私は少し仕事をすることを期待しています。timeit のセットアップでは TestSorting のインスタンスを作成する必要があり、stmt コードはその特定のインスタンスを使用する必要があります。
timeit セットアップで timeit stmt と同じ名前空間に要素を配置する方法を理解したら、unittest.TestCase インスタンスを timeit.Timer に直接フィードできるものに変換する方法を検討します。
マット