python性能对比

python性能对比之items

#1

复制代码
#-*- coding:utf8-*-

import datetime

road_nodes = {}
for i in range(5000000):
    road_nodes[i] = {'id':i}


beg_time = datetime.datetime.now()
for key, val in road_nodes.items():
    pass
end_time = datetime.datetime.now()

print "time_scan:", end_time - beg_time
复制代码

耗时

1
2
$python com_1.py
time_scan: 0:00:17.126098

#2

复制代码
#-*- coding:utf8-*-

import datetime

road_nodes = []
for i in range(5000000):
    road_nodes.append(i)


beg_time = datetime.datetime.now()
for key in road_nodes:
    pass
end_time = datetime.datetime.now()

print "time_scan:", end_time - beg_time
复制代码

耗时

1
2
$python com_2.py
time_scan: 0:00:00.325304

#3

复制代码
#-*- coding:utf8-*-

import datetime

road_nodes = {}
for i in range(5000000):
    road_nodes[i] = {'id':i}


beg_time = datetime.datetime.now()
for key in road_nodes:
    pass
end_time = datetime.datetime.now()

print "time_scan:", end_time - beg_time
复制代码

耗时

1
2
$python  com_3.py
time_scan: 0:00:00.359197

总结

只对于字典key的遍历,用for key in dic方式  

python性能对比之in list/dict

#1

复制代码
from datetime import datetime
a = []
for i in range(50000):
    a.append(i)

aim_list = []
for i in range(1000000):
    aim_list.append(i)


beg_time = datetime.now()
for key in a:
    if key in aim_list:
        pass
end_time = datetime.now()
print "scan:", end_time - beg_time
复制代码

运行

1
2
$python draw.py
scan: 0:00:38.624985

#2  

复制代码
from datetime import datetime
a = []
for i in range(50000):
    a.append(i)

aim_list = {}
for i in range(1000000):
    aim_list[i] = None


beg_time = datetime.now()
for key in a:
    if key in aim_list:
        pass
end_time = datetime.now()
print "scan:", end_time - beg_time
复制代码

运行

1
2
$python  draw2.py
scan: 0:00:00.014031

分析

巨大的差异由 aim_list类型导致,一个是list,一个是dict

for i in ***时,list是一个个遍历,效率是O(n);dict是直接找到,效率是O(1)。






本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/6373197.html,如需转载请自行联系原作者


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值