【发布时间】:2018-08-21 19:28:41
【问题描述】:
我注意到,在使用常规参数运行 timeit 和使用参数 number=1 运行 timeit 之间,结果变化很快。这是我找到的示例。
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 版。这是怎么回事?
【问题讨论】:
-
您是否期望这个函数完全一样地工作,而不管您传递给它的参数是什么?你看过corresponding docs吗?他们对数字参数有什么看法?