环境:
def old(): import math d = 0.0 for x in xrange(1000000): d += math.sqrt(x) def new(): from math import sqrt d = 0.0 for x in xrange(1000000): d += sqrt(x)
时间:
In [129]: time old() CPU times: user 0.27 s, sys: 0.00 s, total: 0.27 s Wall time: 0.27 s In [130]: time new() CPU times: user 0.22 s, sys: 0.00 s, total: 0.22 s Wall time: 0.22 s
new()函数比old()函数运行效率提高20%。
原因在于old()函数每次循环调用都要两次名称查询,第一次是从全局名称空间中查询math module,第二次是从math中搜索sqrt函数。而new()函数每次循环只需一次名称查询。
参考:Python精要参考