社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 3.11 的速度大幅超越 3.8!

CSDN • 2 年前 • 262 次点击  

要:10 月 24 日,Python 官方发布了最新的 3.11 版本,来看看它与 Python 3.8、JavaScript 和 C++17 之间的速度对比。

链接:https://jott.live/markdown/py3.11_vs_3.8

声明:本文为 CSDN 翻译,未经允许禁止转载。

作者 Bram Wasti
译者 | 弯月
出品 | CSDN(ID:CSDNnews)

我在 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.169077842python3.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.169077842python3.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.169077842bun 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 simg++ -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发布|极客头条

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/148987
 
262 次点击