社区所有版块导航
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

10 亿次嵌套循环性能对比,Python 表现最差

Java基基 • 1 月前 • 143 次点击  

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入芋道快速开发平台知识星球。下面是星球提供的部分资料: 

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、 ERPCRMAI 大模型等等功能:

  • Boot 多模块架构:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • Cloud 微服务架构:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK 17/21 + SpringBoot 3.3、JDK 8/11 + Spring Boot 2.7 双版本 

来源:网络


下图展示了多种编程语言执行 10 亿(1 Billion)次嵌套循环的性能对比。

从上图可以看出 C 和 Rust 并列第一,耗时 0.50 秒,性能最好,Python 表现最差,耗时 74.42 秒。

看看以下视频,Python 走的跟蜗牛一样:

性能上,编译型语言(如 C、Rust 和 Java)由于强大的编译器优化,明显优于解释型语言(如 Python 和 Ruby)。

斐波那契数的计算表现最好的依然是 C 和 Rust,运行时间分别为 0.40 秒 和 0.41 秒。

Python 与 R 语言垫底,运行时间分别为 29.00 秒 和 68.96 秒。

所以,如果我们项目需要处理大量计算,C、Rust 和 Java 等语言是更好的选择。

Python、PHP 和 Ruby 适合开发效率优先的场景,但在计算密集型任务中表现相对较弱。

以上测试是在一台 M3 MacBook Pro(16GB RAM) 上通过 /usr/bin/time 命令获取的时间。

每种语言都接收输入值 40。

  • Clang 版本:Apple clang version 16.0.0 (clang-1600.0.26.4)
  • R 版本:Rscript (R) version 4.4.2 (2024-10-31)
  • Kotlin 版本:kotlinc-jvm 2.0.21 (JRE 23.0.1)
  • Java 版本:javac 23.0.1
  • Rust 版本:cargo 1.82.0
  • Node.js 版本:v22.11.0
  • Python 版本:3.9.6
  • Ruby 版本:3.3.5
  • PHP 版本:8.3.13
  • Dart 版本:3.5.4
  • Bun 版本:1.1.34
  • Deno 版本:2.0.6
  • Go 版本:1.21.2
  • PyPy 版本:7.3.17

更多语言及更新版本的执行时间

从下图可以看出,Zig、Rust 和 C 语言在执行 10 亿(1 Billion)次嵌套循环表现最佳,均在0.5秒左右。

Python 使用 3.13 版本的时间显著提升至 31.589 秒。

R 语言所需时间最长,达到了 72.643 。

以上测试是在一台 M3 MacBook Pro(16GB RAM) 上通过 hyperfine 获取的执行时间。

每个程序的输入值均为40。

  • Swift 版本:swift-driver 版本:1.115,Apple Swift 版本 6.0.2(swiftlang-6.0.2.1.2 clang-1600.0.26.4)
  • Clang 版本:Apple clang 版本 16.0.0(clang-1600.0.26.4)
  • Fortran 版本:GNU Fortran(Homebrew GCC 14.2.0_1)14.2.0
  • R 版本:Rscript(R)版本 4.4.2(2024-10-31)
  • Kotlin 版本:kotlinc-jvm 2.0.21(JRE 23.0.1)
  • MiniRuby(ruby yjit)版本:ruby 3.4.0dev
  • LuaJIT 版本:LuaJIT 2.1.1731601260
  • Common Lisp(SBCL)版本:2.4.11
  • Odin 版本:dev-2024-11:e6475fec4
  • Free Pascal 版本:3.2.2
  • Java 版本:javac 23.0.1
  • Rust 版本:cargo 1.82.0
  • Scala CLI 版本:1.5.4
  • Dotnet 版本:9.0.100
  • Clang++ 版本:16.0.0
  • Crystal 版本:1.14.0
  • Elixir 版本:1.17.3
  • Node 版本:v22.11.0
  • Python 版本:3.13
  • Ruby 版本:3.3.5
  • PHP 版本:8.3.13
  • Dart 版本:3.5.4
  • Bun 版本:1.1.34
  • Deno 版本:2.0.6
  • PyPy 版本:7.3.17
  • Zig 版本:0.13.0
  • Inko 版本:0.17.1
  • Go 版本:1.21.2
  • Nim 版本:2.2.0
  • Scala 版本:3.5.2

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

源码测试

测试源代码:https://github.com/bddicken/languages

在线地址 1:https://benjdd.com/languages/

在线地址 2:https://benjdd.com/languages2/

我们可以克隆这个项目到本机测试:

git clone https://github.com/bddicken/languages

进入目标基准测试目录:

cd loops

运行以下脚本编译:

../compile.sh

然后执行以下脚本:

../run.sh

你应该会看到类似如下的输出:

$ ../run.sh

Benchmarking Zig
Benchmark 1: ./zig/code 40
  Time (mean ± σ):     513.9 ms ±   2.9 ms    [User: 504.5 ms, System: 2.6 ms]
  Range (min … max):   510.6 ms … 516.2 ms    3 runs


Benchmarking C
Benchmark 1: ./c/code 40
  Time (mean ± σ):     514.0 ms ±   1.1 ms    [User: 505.6 ms, System: 2.8 ms]
  Range (min … max):   513.2 ms … 515.2 ms    3 runs


Benchmarking Rust
Benchmark 1: ./rust/target/release/code 40
  Time (mean ± σ):     514.1 ms ±   2.0 ms    [User: 504.6 ms, System: 3.1 ms]
  Range (min … max):   512.4 ms … 516.3 ms    3 runs

..

执行完成后,使用以下命令清理:

../clean.sh

欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

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