Py学习  »  Python

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

Python入门到精通 • 3 月前 • 61 次点击  
下图展示了多种编程语言执行 10 亿1 Billion)次嵌套循环的性能对比。
图片

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

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

已关注

               关注

重播

关闭

观看更多

更多

    退出全屏

    切换到竖屏全屏退出全屏

    Python开发已关注

    分享视频

    ,时长00:12


    0/0

    00:00/00:12

     切换到横屏模式 

    继续播放

    进度条,百分之0

    播放

    00:00/

    00:12

    00:12

    全屏


     倍速播放中 

     0.5倍  0.75倍  1.0倍  1.5倍  2.0倍 

     超清  流畅 

     您的浏览器不支持 video 标签 

    继续观看

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

    观看更多

    转载

    ,

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

    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


    源码测试

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

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

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

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


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


    进入目标基准测试目录:


    cd loops


    运行以下脚本编译:


    ../compile.sh


    然后执行以下脚本:


    ../run.sh


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


    $ ../run.sh
    Benchmarking ZigBenchmark 1: ./zig/code 40  Time (mean ± σ):     513.9 ms ±   2.9 ms    [User504.5 ms, System2.6 ms]  Range (min … max):   510.6 ms … 516.2 ms    3 runs

    Benchmarking CBenchmark 1: ./c/code 40  Time (mean ± σ):     514.0 ms ±   1.1 ms    [User505.6 ms, System2.8 ms]  Range (min … max):   513.2 ms … 515.2 ms    3 runs

    Benchmarking RustBenchmark 1: ./rust/target/release/code 40  Time (mean ± σ):     514.1 ms ±   2.0 ms    [User504.6 ms, System3.1 ms]  Range (min … max):   512.4 ms … 516.3 ms    3 runs
    ...


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


    ../clean.sh


    (完)


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