我正在阅读 David Beazley 的 Python 参考书,他提出了一个观点:
例如,如果您执行大量平方根运算,使用“from math import sqrt”和“sqrt(x)”比输入“math.sqrt(x)”更快。
和:
对于涉及大量使用方法或模块查找的计算,通过首先将要执行的操作放入局部变量来消除属性查找几乎总是更好。
我决定尝试一下:
第一的()
def first():
from collections import defaultdict
x = defaultdict(list)
第二()
def second():
import collections
x = collections.defaultdict(list)
结果是:
2.15461492538
1.39850616455
诸如此类的优化对我来说可能并不重要。但我很好奇为什么与 Beazley 所写的相反的是真实的。请注意,有 1 秒的差异,鉴于任务微不足道,这很重要。
为什么会这样?
更新:
我得到的时间如下:
print timeit('first()', 'from __main__ import first');
print timeit('second()', 'from __main__ import second');