带数字的蒂米特和没有数字的时间不一致



我注意到结果在运行 timeit 与常规 arugments 和 timeit 与参数编号 = 1 之间变化很快。这是我找到的例子。

import sympy as sp
import numpy as np
var = (sp.Symbol("x"), sp.Symbol("y"), sp.Symbol("z"))
x,y,z = var[0], var[1], var[2]
monos = np.array([1, z, y, x, z**2, y*z, y**2, x*z, x*y, x**2, z**3, y*z**2, y**2*z, y**3, x*z**2, x*y*z, x*y**2, x**2*z, x**2*y, x**3, z**4, y*z**3, y**2*z**2, y**3*z, y**4, x*z**3, x*y*z**2, x*y**2*z, x*y**3, x**2*z**2, x**2*y*z, x**2*y**2, x**3*z, x**3*y, x**4])
f = sp.lambdify(var, monos)
import testit
timeit.timeit("(f(2,3,4))", setup="from __main__ import f") 
#returns 2.0760600566864014
timeit.timeit("(f(2,3,4))", setup="from __main__ import f", number=1)
#returns 1.5974044799804688e-05

我使用的是 python2 版本 2.7.12 和 sympy 版本 1.2。这是怎么回事?

与 IPython %timeit 不同,timeit.timeit返回所有运行所花费的总时间。要获得个人跑步的时间,您必须除以数字。您还可以使用timeit.Timer(stmt).autorange()(仅限 Python 3.6+(,它会自动选择多个运行。

我建议使用IPython%timeit进行计时。它只能以交互方式工作,但比标准库中的timeit模块更容易使用。

相关内容

  • 没有找到相关文章

最新更新