Python 3的枚举速度是否比Python 2慢?

 手机用户2502854133 发布于 2023-01-16 19:08

对于最小循环的枚举,Python 3似乎比Python 2的速度要慢得多,而对于新版本的Python 3,这似乎越来越差.

我在我的64位Windows机器上安装了Python 2.7.6,Python 3.3.3和Python 3.4.0(Intel i7-2700K - 3.5 GHz),每个Python都安装了32位和64位版本.虽然对于给定版本,在存储器访问限制内,32位和64位之间的执行速度没有显着差异,但不同版本级别之间存在非常显着的差异.我会让时间结果说明如下:

C:\**Python34_64**\python -mtimeit -n 5 -r 2 -s"cnt = 0" "for i in range(10000000): cnt += 1"
5 loops, best of 2: **900 msec** per loop

C:\**Python33_64**\python -mtimeit -n 5 -r 2 -s"cnt = 0" "for i in range(10000000): cnt += 1"
5 loops, best of 2: **820 msec** per loop

C:\**Python27_64**\python -mtimeit -n 5 -r 2 -s"cnt = 0" "for i in range(10000000): cnt += 1"
5 loops, best of 2: **480 msec** per loop

由于Python 3"范围"与Python 2的"范围"不同,并且在功能上与Python 2的"xrange"相同,我还将时间定义如下:

C:\**Python27_64**\python -mtimeit -n 5 -r 2 -s"cnt = 0" "for i in **xrange**(10000000): cnt += 1"
5 loops, best of 2: **320 msec** per loop

人们可以很容易地看到版本3.3的速度几乎是版本2.7的两倍,Python 3.4的速度比再次慢了大约10%.

我的问题:是否有一个环境选项或设置可以解决这个问题,或者只是效率低下的代码或解释器为Python 3版本做了更多工作?


答案似乎是Python 3使用过去在Python 2.x中称为"long"的"无限精度"整数,它的默认"int"类型,没有任何选项可以使用Python 2固定位长"int"和正在处理这些可变长度的"int",这需要花费额外的时间,如下面的答案和评论中所讨论的那样.

可能是Python 3.4比Python 3.3慢一些,因为内存分配的变化支持同步,稍微减慢了内存分配/释放,这可能是当前版本的"长"处理运行速度较慢的主要原因.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有