偶爾閑逛,看到有個(gè)帖子討論python的dict中查找key值效率的。索性寫(xiě)了下面的測(cè)試程序,結(jié)果一目了然。
測(cè)試環(huán)境Win 7 64位操作系統(tǒng),python版本為2.7.6
為防止cache對(duì)前后代碼速度的影響,先測(cè)試五次,兩段代碼交換后再測(cè)試五次。測(cè)試結(jié)果可以看出"in" 比has_key要稍稍快一點(diǎn)點(diǎn),差別其實(shí)很小,只是在大字典中時(shí)才能看出來(lái)。


#以下測(cè)試比較has_key 和in查找字典元素的速度
#測(cè)試方法:測(cè)試五次,然后顛倒兩段代碼順序再測(cè)試五次
dict = {'Age': 7};
#先構(gòu)造一個(gè)100000元素的大字典
i = 0
while (i<100000):
key0 = '%05d' % i
dict[key0] = i * i + 3 * i + 5
i = i+1
#測(cè)試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)
#測(cè)試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)