避免在timeit.repeat()基准测试中进行昂贵的设置

时间:2012-06-12 13:01:56

标签: python profiling benchmarking timing timeit

我试图测量我的一个小的Python代码片段的执行时间,并且我想知道最好的方法是什么。

理想情况下,我想运行某种设置(需要花费很长时间),然后运行一些测试代码几次,并获得这些运行的最短时间。

timeit()似乎合适,但我不确定如何在不重新执行设置的情况下获得最短时间。小代码片段展示了这个问题:

import timeit

setup = 'a = 2.0'  # expensive
stmt = 'b = a**2'  # also takes significantly longer than timer resolution

# this executes setup and stmt 10 times and the minimum of these 10 
# runs is returned:
timings1 = timeit.repeat(stmt = stmt, setup = setup, repeat = 10, number = 1)

# this executes setup once and stmt 10 times but the overall time of
# these 10 runs is returned (and I would like to have the minimum 
# of the 10 runs):
timings2 = timeit.repeat(stmt = stmt, setup = setup, repeat = 1, number = 10)

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用datetime为您做计划?

start = datetime.datetime.now()
print datetime.datetime.now() - start #prints a datetime.timedelta object`

这将为您提供经过的时间,您可以通过微小的开销来控制它的起始位置。

编辑:这是一个使用它也用于做某些时间的人的视频,它似乎是获得运行时间的最简单方法。 http://www.youtube.com/watch?v=Iw9-GckD-gQ