《python核心编程》第八章习题8-13

8–13. 程序执行性能. 在 8.5.2 节里, 我们介绍了两种基本的迭代序列方法: (1) 通过序列 项, 以及 (2) 通过序列索引遍历. 该小节的末尾我们指出后一种方法在序列很长的时候性能不佳. (在我的系统下, 性能差了将近两倍[83%]) 你认为它的原因是什么?
 

网上搜了好久也没有答案,就自己做了个实验:

#!/usr/bin/python
# -*- coding:utf-8 -*-
#Filename:8_13.py

import time
def compare():
    strtime=time.clock()
    alist=range(10000000)
    for i in range(len(alist)):
        pass
        #print alist[i],
    #for i in alist:
        #pass
    endtime=time.clock()
    print "运行时间: ",(endtime-strtime)
compare()

window7系统结果如下:

序列遍历,运行时间:  0.569418727389

迭代遍历,运行时间:  0.339704447834

确实迭代遍历快了很多。

立刻想到,会不会range(len(alist))占用的时间太长了,

import time
def compare():
    alist=range(10000000)
    strtime = time.clock()
    range(len(alist))
    endtime = time.clock()
    print "运行时间: ",(endtime-strtime)
compare()

运行时间:  0.24903010878

bingo!这就是答案!

转载于:https://my.oschina.net/hounLeft/blog/685109

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值