python循环性能pk

本文探讨了Python中两种常见循环方法——for和while的性能差异,通过测试发现,由于边界检查和变量自增操作,for循环通常比while循环慢。此外,文章还提到了内置函数在循环性能上的优势,以及利用数学公式直接计算以避免循环的优化方法,强调了减少循环和使用内置函数的重要性。
摘要由CSDN通过智能技术生成

python循环性能pk

在任何一种编程语言中,循环都是非常消耗时间的操作。假设任意一种简单的单步操作耗费的时间是1个单位,将此操作重复执行上万次,最终耗费的时间也将增长上万倍。众所周知,python不是一种执行效率较高的语言,因此,我们对于python语言里的循环性能更加关注。

forwhile

whilefor是python中常用的两种实现循环的方法,但它们的运行效率实际上是有差距的。使用下面的测试代码:

import timeit

def while_loop(n=100):
    i = 0
    s = 0
    while i < n:
        s += i
        i +=1
    return s


def for_loop(n=100):
    s = 0
    for i in range(n):
        s += i
    return s


def main():
    print('while loop:', timeit.timeit(while_loop, number=100))
    print('for loop:', timeit.timeit(for_loop, number=100))


if __name__ == '__main__':
    main()

运行结果:

# while loop: 0.11076588099240325
# for loop: 0.03892302500025835

可以看到:一个简单的求和的循环,for循环要比while循环快很多。

是什么导致这样的差距?

首先要说明的一点是:C代码效率优于python代码,这已经是常识。同时,Python 底层的解释器和内置函数是用 C 语言实现的

实际上,在每次循环中,while会比for多执行两步操作:边界检查和变量i的自增。即:while i < ni += 1,并且这两步都是显示的纯python脚本。相比之下,for循环不需要这两步额外的依赖于python脚本的操作,因此效率优于while循环,并且随着循环次数不断增加,二者的运行效率差距也越来越大。

为了证实以上的解释,我们做如下的试验:

import timeit


def while_loop(n=100):
    i = 0
    s = 0
    while i < n:
        s += i
        i += 1
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值