如何在Python中交互式地(微)基准测试代码表达式(即Julia中的
我想要交互式地基准测试一个表达式(一个函数调用),其中这个表达式被评估的次数取决于它的计算成本/方差...
我尝试过
1. 如何解释以下结果的时间输出:
@btime
/@benchmark
的等效物)?我想要交互式地基准测试一个表达式(一个函数调用),其中这个表达式被评估的次数取决于它的计算成本/方差...
我尝试过
timeit.timeit
,但我有一些问题:1. 如何解释以下结果的时间输出:
>>> a = 2.2
>>> timeit.repeat("round(a)", setup='from __main__ import a; gc.enable()', repeat=5,number=10)
[4.631001502275467e-06, 1.3809185475111008e-06, 1.2170057743787766e-06, 1.1718366295099258e-06, 1.1730007827281952e-06]
>>> timeit.timeit("round(a)", setup='from __main__ import a; gc.enable()', number=10)
5.741836503148079e-06
>>> timeit.timeit("round(a)", setup='from __main__ import a; gc.enable()')
0.11461802502162755
>>> timeit.Timer('round(a)', setup='from __main__ import a; gc.enable()').autorange()
(5000000, 0.4272152939811349)
当我从1
到10
遍历number
时,时间似乎保持相对稳定,但是随后增长的数量级不同....
- 是否有意义创建一个工作流程,在其中首先创建
Timer
对象,然后多次修改代码以评估和基准测试修改后的计时器?例如:
import timeit
import gc
bclass = timeit.Timer('round(1.1)','gc.enable()', globals=globals())
[...]
bclass.stmt = "small_3x2_nash.vertex_enumeration()"
bclass.autorange()
bclass.stmt = "small_3x2_nash.lemke_howson_enumeration()"
bclass.autorange()
bclass.stmt = "small_3x2_nash.support_enumeration()"
bclass.autorange()
看起来这似乎不可能,因为我尝试了很多不同的代码,但计时结果几乎没有变化。
gc
库。 - GaNiziolek