您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python是“ dict中的键”与“ dict.keys()中的键”不同/更快的方法

Python是“ dict中的键”与“ dict.keys()中的键”不同/更快的方法

py2和py3的详细信息如下。

您的假设是正确的,原因如下:

我创建了一个小的benckmark脚本来说明我的观点:

#! /usr/bin/python2.7

import datetime as dt
import random

dict_size = 1000000
num_iterations = 100

d = {i: i for i in xrange(dict_size)}

def f():
    k = random.randint(0,dict_size-1)
    return (k in d)

def g():
    k = random.randint(0,dict_size-1)
    return (k in d.keys())

def test(func):
    t = dt.datetime.utcNow()
    for i in xrange(num_iterations):
        func()
    print "%s --> %1.6f s" % (func, (dt.datetime.utcNow()-t).total_seconds())

test(f)
test(g)

输出(python 2.7.6 Ubuntu 14.04):

<function f at 0x7ff2e0126d70> --> 0.000598 s
<function g at 0x7ff2e0126de8> --> 5.191553 s

我还测试了nr次迭代和dict大小交换(仅100个项目的dict,1M次迭代)。

<function f at 0x7f94cb5e6d70> --> 3.614162 s
<function g at 0x7f94cb5e6de8> --> 7.007922 s

这里的结果更加接近。

因此,性能差异确实随字典大小的增加增加

我为python 3修改了脚本:

并在同一台机器上使用python 3.4.3进行了测试。

f-> 0.000590 s g-> 0.000565 s

f-> 4.525487 s g-> 4.837232 s

因此,在python 3中,性能差异消失了。

python 2022/1/1 18:47:15 有344人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶