Python-3.12.3 新版本发布 & 性能提升

2024-05-0810:00:24编程语言入门到精通Comments300 views字数 1710阅读模式

概要文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

2024 年 4 月 Python 发布了 python-3.12.3 版本,看了下它的更新日志,还是有不少提升的。让我感觉比较有意思的是 re 这个老模块也得到了性能提升,下面我们一起看一下新版本的 re 性能提升了多少。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

Python-3.12.3 新版本发布 & 性能提升文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html


场景文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

在网络上我们经常发现,有些人如果使用了比较有攻击性的辞藻,这些敏感词就会被处理成 * 号。假设现在要把 “干” 字处理成 “*” 号 ,用 Python 来实现,应该是类似于下面的一行代码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

#!/usr/bin/env python3
import re
if __name__ == "__main__":    print(re.sub("干", "*", "准备干一票大的"))

运行效果文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

python3 main.py准备*一票大的

想想如果官方通过算法改进提升了 re.sub 的性能,由于我们的程序直接依赖于它,理论上我们程序的性能也会跟着提上去。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

在编程世界里,还真的这种好事;不用改代码,只要升级一下 Python 版本就能坐享其成!于是我测试了一下 python-3.11.3 和 python-3.12.3 两个版本在这个场景下的性能差异。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html


 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

Python-3.11.3 性能表现文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

python-3.11.3 版本下 re.sub 执行 500w 次观察的耗时情况。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

#!/usr/bin/env python3
import refrom datetime import datetime

def bench():    iters = 5000000    start_at = datetime.now()
    for i in range(iters):        re.sub("干", "*", "准备干一票大的")
    end_at = datetime.now()
    print("执行耗时 {} \n".format(end_at - start_at))

if __name__ == "__main__":    bench()

运行三次耗时情况如下,基本稳在了 4.5s 左右。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

[root@git tmp]# /usr/local/python-3.11.3/bin/python3 main.py 执行耗时 0:00:04.480667 
[root@git tmp]# /usr/local/python-3.11.3/bin/python3 main.py 执行耗时 0:00:04.543946 
[root@git tmp]# /usr/local/python-3.11.3/bin/python3 main.py 执行耗时 0:00:04.524779

Python-3.12.3 性能表现文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

python-3.12.3 版本下 re.sub 执行 500w 次观察的耗时情况。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

#!/usr/bin/env python3
import refrom datetime import datetime

def bench():    iters = 5000000    start_at = datetime.now()
    for i in range(iters):        re.sub("干", "*", "准备干一票大的")
    end_at = datetime.now()
    print("执行耗时 {} \n".format(end_at - start_at))

if __name__ == "__main__":    bench()

运行三次耗时情况如下,基本稳在了 3.7s 左右。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

[root@git tmp]# /usr/local/python-3.12.3/bin/python3 main.py执行耗时 0:00:03.725913 
[root@git tmp]# /usr/local/python-3.12.3/bin/python3 main.py执行耗时 0:00:03.696319 
[root@git tmp]# /usr/local/python-3.12.3/bin/python3 main.py执行耗时 0:00:03.703213

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html


总结文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

In [1]: (4.5 - 3.7) / 4.5Out[1]: 0.17

3.11.3 版本耗时 4.5s ,3.12.3 版本耗时 3.7s ,算了一下提升了差不多 17% 左右。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

我自己的环境都升级上去了,跑了段时间除了比之前快了一点之外,也没发现什么问题;现在分享给大家。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

官方下载地址:https://www.python.org/downloads/source/文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/63467.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/63467.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定