意外!运算性能:C#排名第二Python垫底

admin 2025-12-27 01:50:29 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文基于莱布尼茨公式计算Pi的基准测试,分析编程语言运算性能。发现开启SIMD的C#逼近C++,PythonPyPy比CPython快82倍,PHP8凭借JIT超越Ruby,JSBun优于部分编译型语言。结论指出语言出身非唯一标准,SIMD优化与运行时选择更为关键,LLVM架构统治高性能计算。 综合评分: 85 文章分类: 其他


cover_image

意外!运算性能: C#排名第二 Python垫底

原创

CyberSecGuy

像梦又似花

2025年12月26日 14:04 广东

导读:

    为什么C# 能以运算性能排名第二名的成绩逆袭现在热门的编程语言JAVA,Ruby,Javascript,Swift,Zig等… 1000 万次迭代算 π 的实测过程,编译型语言真的碾压解释型?莱布尼茨公式不仅能算 π,还是检验编程语言性能的 “神器”!暴露了编程语言性能的核心秘密,

用莱布尼茨公式算 π 的基准测试告诉你答案:有的语言快到 0.1 秒,有的却要 10 秒 +,热门语言性能排行大公开,附详细对比图表!

    基于这张“莱布尼茨公式计算 (10亿次迭代)”的性能基准测试图,我们可以从数据中挖掘出一些打破常规认知、且非常有趣的结论。

    需要特别注意的是,X轴使用的是对数坐标(Log Scale)。这意味着图表右侧的微小长度差异,在实际时间上代表着巨大的鸿沟。

以下是综合分析得出的几个令人意外的结论:

1. C# (SIMD) 竟然“贴脸”硬刚 C++

在传统印象中,C# 是通过虚拟机(CLR)运行的托管语言,性能通常被认为不如 C++ 或 Rust。

  • 事实依据: 图表中,C# (SIMD) v10.0.101 的耗时为 225.1ms,仅比榜首的 C++ (clang++) v21.1.2 的 223.0ms 慢了 2.1毫秒
  • 结论: 在开启 SIMD(单指令多数据流)硬件指令集优化的情况下,现代 C# 的数值计算能力已经可以与顶级的 C++ 编译器并驾齐驱。这打破了“托管语言一定慢”的刻板印象。

2. Python 的“人格分裂”:最快与最慢相差 80 倍

    虽然大家都知道“Python 慢”是常识(因为它是解释型语言),但这张图揭示了“哪个 Python”至关重要。

  • 事实依据:
  • 图表最底部的 Python (CPython) v3.14.2 耗时 86.18s(即 86180ms),是全场倒数第一。
  • 图表中部的 Python (PyPy) v3.11.13 耗时 1.04s(1040ms)。
  • Python (NumPy) v3.13.11 耗时 2.33s
  • 结论: 同样的 Python 代码逻辑,仅仅更换解释器(从 CPython 换到 PyPy),性能就能提升约 82倍。而使用了 CPython 的标准解释器进行纯循环计算时,其效率低得惊人(比 C++ 慢了约 386 倍)。这生动地解释了为什么 Python 开发中“能用库(NumPy)就绝不写原生循环”的金科玉律。

3. PHP 居然“吊打”了 Ruby 和 Python

在 Web 开发鄙视链中,PHP 常被调侃,但在这个纯计算测试中,它表现出了惊人的韧性。

  • 事实依据:PHP v8.4.15 耗时 8.62s。相比之下,Ruby v3.4.7 耗时 35.91sPython (CPython) 耗时 86.18s
  • 结论: PHP 8 在开启 JIT 后的计算性能,实际上比 Ruby 快了 4 倍,比原生 Python 快了 10 倍。对于脚本语言来说,PHP 的计算性能被严重低估了。

4. JavaScript (Bun) 的表现优于部分编译型语言

通常认为编译型语言(如 Haskell, Crystal)一定比解释型/JIT 语言(如 JS)快,但事实并非总是如此。

  • 事实依据: 基于 Bun v1.3.4 运行的 JavaScript 耗时 912.5ms。这个成绩优于编译型语言 Haskell (GHC) 的 1.05s 和 Crystal 的 1.20s,甚至比老牌的 Java (GraalVM) (900.9ms) 仅仅慢了一点点。
  • 结论: 现代 JavaScript 引擎(尤其是 V8 和 JavaScriptCore 的优化,以及 Bun 的运行时优化)已经极度成熟。在密集计算场景下,JS 已经不再是单纯的“脚本玩具”,其性能足以通过 JIT 技术超越部分静态编译语言。

5. SIMD 优化是“降维打击”

图表中多次出现同一个语言的不同版本,唯一的区别在于是否使用了 SIMD。

  • 事实依据:
  • Swift (SIMD) 耗时 509.4ns (注意单位是纳秒?不,根据上下文和位置应为 ms,图表标注可能是笔误或极度优化,但看位置在 C(gcc) 之下,Rust 之前,数值 509ms 更合理,若是 509ns 则不符合逻辑)。假设是 509ms,对比普通 Swift 的 892.0ms,提升了近 1 倍。
  • C# (SIMD) 225ms vs C# (普通版在列表中稍后,约 990.9ms)。
  • 结论: 代码层面的算法优化(如使用并行指令集 SIMD)比单纯选择“更快的语言”带来的提升更大。一个优化良好的 C# 程序可以轻松击败一个写得普通的 Rust 程序。

6. LLVM 的“统治地位”

  • 仔细观察排名前 15 的语言:

    C++ (Clang), Rust, Zig, Swift, Julia, Nim…

     这些语言虽然语法各异,但它们背后几乎都站着同一个巨人——LLVM (Low Level Virtual Machine) 编译器架构。

    这张图与其说是“语言大乱斗”,不如说是 “LLVM 后端 vs 其他后端(如 .NET CLR, JVM, GCC)” 的战争。除了 C# (.NET) 和 Fortran/C (GCC) 能与之抗衡外,LLVM 阵营几乎包揽了高性能计算的半壁江山。

7. 那些“名不见经传”的黑马

    图表中出现了一些极其小众但性能强悍的语言:

    Zig (232.6ms):  作为一个旨在替代 C 语言的新秀,它的性能紧咬 C++。这验证了 Zig “没有隐藏控制流”、”手动内存管理” 哲学的高效性。

    Odin (937.8ms): 一个专为游戏开发设计的数据导向语言,性能甚至优于 Scala 和 Kotlin。

    Pony (945.5ms): 以“引用功能(Reference Capabilities)”著称的强内存安全语言。

    结论: 如果你需要极致性能但厌倦了 C++ 的复杂,Zig 是目前数据上最可靠的替代者,而非 Rust(在这个特定测试中 Rust 稍慢于 Zig),但实际情况上Zig的社区发展并没有Rust那么好(Rust有微软支持)

总结

这张图最核心的启示是:语言的“出身”不再决定生死的唯一标准。顶层的 C++、Rust、Zig、C# (SIMD) 差距已经缩小到毫秒级;而底层的脚本语言中,解释器和运行时的选择(如 PyPy vs CPython, Bun vs Node)能带来数量级的性能差异。

图片榜单来源:https://niklas-heer.github.io/speed-comparison/


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:像梦又似花 CyberSecGuy《意外!运算性能: C#排名第二 Python垫底》

评论:0   参与:  0