huyutian

他强由他强,清风拂山岗;他横由他横,明月照大江。他自狠来他自恶,我自一口真气足

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  20 随笔 :: 47 文章 :: 22 评论 :: 0 Trackbacks
偶尔闲逛,看到有个帖子讨论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)
posted on 2015-02-09 20:34 胡雨田 阅读(4683) 评论(0)  编辑 收藏 引用 所属分类: 编程技巧

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理