偶尔闲逛,看到有个帖子讨论python的dict中查找key值效率的。索性写了下面的测试程序,结果一目了然。
测试环境Win 7 64位操作系统,python版本为2.7.6
为防止cache对前后代码速度的影响,先测试五次,两段代码交换后再测试五次。测试结果可以看出"in" 比has_key要稍稍快一点点,差别其实很小,只是在大字典中时才能看出来。
#以下测试比较has_key 和in查找字典元素的速度
#测试方法:测试五次,然后颠倒两段代码顺序再测试五次
dict = {'Age': 7};
#先构造一个100000元素的大字典
i = 0
while (i<100000):
key0 = '%05d' % i
dict[key0] = i * i + 3 * i + 5
i = i+1
#测试has_key指令查找key值100000次
i = 0
count = 0
t0 = time.time()
while(i < 100000):
key0 = '%05d' % random.randint(0, 99999)
if dict.has_key(key0):
count += 1
i+=1
t1 = time.time() - t0
print "spent %f seconds, found %d key." % (t1, count)
#测试in指令查找key值100000次
i = 0
count = 0
t0 = time.time()
while(i < 100000):
key0 = '%05d' % random.randint(0, 99999)
if key0 in dict:
count += 1
i+=1
t1 = time.time() - t0
print "spent %f seconds, found %d key." % (t1, count)