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

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

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

905ee622be7b185caa89093b4f1044ed.gif

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

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

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

  • 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)次嵌套循环的性能对比。

7eb49bb9fcb43c55249b0888ea3726d0.png

从上图可以看出 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 秒。

d2f4347f199bc613d52163fcfe340b63.png

所以,如果我们项目需要处理大量计算,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 。

46f0afe099f1c544e35c3cc8f7b63c44.png

以上测试是在一台 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

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

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

f2be33b91cc537b7d89619c5283a16b8.png

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

1f02e274fa885e50886ccc3009435dcc.png

fbdb80fadf0599e079b441fe764758fc.png8e8b91c1323be76914eea24998d2969f.png4845ad13d46f99838e32852f693a6e63.pnge9bc870ebc8a1ef4f3290b8d53e5f54b.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
内容概要:本文档主要介绍了Intel Edge Peak (EP) 解决方案,涵盖从零到边缘高峰的软件配置和服务管理。EP解决方案旨在简化客户的入门门槛,提供一系列工具和服务,包括Edge Software Provisioner (ESP),用于构建和缓存操作系统镜像和软件栈;Device Management System (DMS),用于远程集群或本地集群管理;以及Autonomous Clustering for the Edge (ACE),用于自动化边缘集群的创建和管理。文档详细描述了从软件发布、设备制造、运输、安装到最终设备激活的全过程,并强调了在不同应用场景(如公共设施、工业厂房、海上油井和移动医院)下的具体部署步骤和技术细节。此外,文档还探讨了安全设备注册(FDO)、集群管理、密钥轮换和备份等关键操作。 适合人群:具备一定IT基础设施和边缘计算基础知识的技术人员,特别是负责边缘设备部署和管理的系统集成商和运维人员。 使用场景及目标:①帮助系统集成商和客户简化边缘设备的初始配置和后续管理;②确保设备在不同网络环境下的安全启动和注册;③支持大规模边缘设备的自动化集群管理和应用程序编排;④提供详细的密钥管理和集群维护指南,确保系统的长期稳定运行。 其他说明:本文档是详细描述了Edge Peak技术及其应用案例。文档不仅提供了技术实现的指导,还涵盖了策略配置、安全性和扩展性的考虑,帮助用户全面理解和实施Intel的边缘计算解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值