【发布时间】:2016-04-15 00:13:11
【问题描述】:
我读过math.sqrt 比** 快,今天我尝试了。但有趣的不是这两者之间的时间差,而是** 带变量和** 带值之间的时间差:
value1 = 10.1
value2 = 0.5
%timeit value1 ** value2
# 1000000 loops, best of 3: 645 ns per loop
%timeit 10.1 ** 0.5
# 10000000 loops, best of 3: 60.7 ns per loop
这快了十倍以上。而对于数学函数来说,时间几乎是相同的(变量查找只需要几纳秒):
import math
%timeit math.sqrt(10.1)
# 1000000 loops, best of 3: 529 ns per loop
%timeit math.sqrt(value1)
# 1000000 loops, best of 3: 568 ns per loop
谁能解释一下为什么变量查找对** 产生了如此大的影响,而对math.sqrt 却没有什么影响?
设置:
- python 3.5
- Windows 10 64 位
【问题讨论】:
标签: python performance