Python 3.11 的速度大幅超越 3.8!

摘要:10 月 24 日,Python 官方发布了最新的 3.11 版本,来看看它与 Python 3.8、JavaScript 和 C++17 之间的速度对比。
链接:https://jott.live/markdown/py3.11_vs_3.8
声明:本文为 CSDN 翻译,未经允许禁止转载。
我在 M1 Pro 上尝试用 Python 3.8、3.11、Bun(JavaScript 运行时)和 C++17 (-O2) 运行了一段 N 体模拟代码。
Python
Python 是一种很流行且广受好评的解释性语言。最近,Python 在性能提升方面也有了很大进步,通过我的测试可以看出最新版本的速度有了明显的提升。
在这个测试中,我运行了1000 万步的 N 体模拟。(Python 源代码在这里:https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/nbody-python3-1.html)
$ time python3.8 sim.py 10000000
-0.169075164
-0.169077842
python3.8 sim.py 10000000 96.07s user 0.63s system 99% cpu 1:36.79 total
结果表明,Python 3.8 总共耗时 96.79 秒。
$ time python3.11 sim.py 10000000
-0.169075164
-0.169077842
python3.11 sim.py 10000000 31.92s user 0.05s system 99% cpu 31.976 total
而 Python 3.11 只用了 31.98 秒,意味着 3 倍的速度提升!
JavaScript
JavaScript 是衡量编程语言性能的一个很好的基准。JavaScript 与 Python 一样,是一种灵活的动态类型脚本语言,可以在终端中运行,而且拥有完善的 C API。
在此次测试中,JavaScript 的表现并不差,它的运行速度超过了 Python。
究竟有多快?(JavaScript 源代码在这里:https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/nbody-node-6.html)
$ time bun sim.ts 10000000
-0.169075164
-0.169077842
bun sim.ts 10000000 0.76s user 0.01s system 100% cpu 0.768 total
Bun 的模拟耗时为 0.768 秒,比 Python 3.11 快 41 倍。相信对于任何熟悉 JavaScript 的人来说,这个结果都在意料之中。JavaScript 是一种 JIT 编译语言,拥有多个出色的运行时。
C++ 17
C++ 是一种编译语言,这意味着它缺乏 Python 和 JavaScript 的一些便利性。除了严格的类型和晦涩难懂的语法之外,C++ 还需要提前编译。
使用 -O2 编译 C++ 代码需要 0.183 秒。(C++ 源代码在这里:https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/nbody-gpp-9.html)
$ time g++ -O2 -std=c++17 sim.cc -o sim
g++ -O2 -std=c++17 sim.cc -o sim 0.11s user 0.03s system 76% cpu 0.183 total
接着,运行可执行文件:
$ time ./sim 10000000
-0.169075164
-0.169077842
./sim 10000000 0.42s user 0.00s system 99% cpu 0.423 total
C++ 的模拟耗时为 0.423 秒,比 JavaScript 快 1.8 倍。在我看来,这个数字代表了 Python 之类的语言可以达到的性能“峰值”。
从理论上来讲,JIT 编译语言可以击败编译语言。然而据我所知,实践中并没有真正出现过这样的情况。
Python 万岁!
Python 的性能确实在不断提升,这对我们来说无疑是个天大的好消息。Python 的语法非常简洁,常常作为新手程序员的入门编程语言。
JIT 编译 CPython 确实取得了付出了很大的努力,这里我要着重表扬 Torch Dynamo(https://github.com/pytorch/torchdynamo)。尽管这个库面向的是 PyTorch 代码,但这是一项通用的字节码重写技术,值得深入了解。
— 推荐阅读 —
☞开源安全的危机在于太相信 GitHub?——专访Apache之父&OpenSSF基金会总经理Brain Behlendorf ☞一个没有KPI的国产编程语言,开源3个月有了哪些新进展? ☞中国联通与腾讯共同设立新公司;苹果被曝已冻结招聘,直至2023年9月;Apache Flink 1.16发布|极客头条
[广告]赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

随时掌握互联网精彩
- 素白白影视:2024年最新影视资源分享平台
- 工时大于10*7,年近 60 岁的 SpaceX 首席工程师被边缘化!
- 腾讯大股东否认中信组团收购消息;马斯克要求Twitter工程师默写代码;苹果或被强制开放侧载|极客头条
- 无尽创想!CSDN 1024 大赛重磅发布
- 《羊了个羊》否认抄袭;安卓反垄断案再次败诉,罚款金额下降至286亿元;Fedora 37 Beta 发布|极客头条
- 学习通否认 QQ 号被盗与其有关:已报案;iPhone 14 量产工作就绪:四款齐发;简洁优雅的软件早已是明日黄花|极客头条
- 华为胡厚崑:成就伙伴,共赢数智未来
- 荣耀Magic3 Pro体验报告——科技理想主义践行者
- Lets Encrypt根证书将于9月30号过期!
- 又小拍拍了拍你:Open Talk 2021年开年第一期来了
- 高朋满座话未来|专访小米集团创始人、董事长兼CEO雷军
- 技术沙龙|赋能企业数字化转型,移动云云原生应用架构实践