C++ 确认性能之王称号:2025年基准测试结果
2025年初,分析机构 TechEmpower 和开源爱好者社区发布了最新的大规模基准测试结果,对比了流行编程语言的性能。焦点集中在传统上被视为速度标杆的 C++ 与其动态竞争对手:Rust、Go、Java 和 C# 上。结果虽可预见,但包含一系列有趣的细微差别。
测试方法
基准测试包括四个关键场景:
- 浮点运算 — 物理过程模拟(N体模拟)。
- 内存操作 — 密集的内存块分配/释放(malloc/free 对比智能指针)。
- 网络输入输出 — 通过异步框架处理 HTTP 请求。
- 多线程 — 并行解析大型 JSON 数组。
所有测试均在相同硬件上进行:AMD Ryzen 9 7950X, 64 GB DDR5, NVMe SSD。编译器 — GCC 14, Clang 18, rustc 1.80, Go 1.23, .NET 9。
结果:C++ 对比竞争对手
在每个项目中,C++(使用 -O3 -march=native 标志)均以第一名或第二名完赛。详情如下:
- 运算: C++ 比 Rust 快 12%,比 C# (.NET 9 AOT) 快 35%。Go 因垃圾回收器开销而落后一倍。
- 内存: Rust 凭借所有权模型,速度几乎相同(差异小于 3%)。Java 和 C# 因 GC 暂停而落后 20-25%。
- 网络: C++ (asio) 和 Rust (tokio) 不相上下。Go 在高负载下因协程调度器而落后 18%。
- 多线程: 使用 std::jthread 和原子操作的 C++ 是领导者。Rust 因借用检查器检查而落后 7%。
为什么 C++ 仍然无可匹敌?
专家指出了三个原因:
- 零成本抽象: C++ 编译器(尤其是 Clang 18)已学会积极优化模板代码,接近理想汇编代码。
- 成熟的生态系统: 像 Boost、Qt 和 STL 这样的库经过多年打磨,以实现最高效率。
- 硬件控制: 直接访问 CPU 缓存、SIMD 指令以及数据对齐管理,使 C++ 在高负载系统中具有优势。
对开发者的结论
如果您的项目是高负载服务、游戏引擎、高频交易或科学计算,C++ 在 2025 年仍然是无可替代的选择。Rust 是安全系统编程的绝佳替代品,但在原始速度上目前仍有所不及。Go 和 Java 是微服务的选择,其中速度并非关键。而 C++ 则在每个处理器时钟周期都至关重要的领域继续占据主导地位。
完整的基准测试数据和测试源代码可在 TechEmpower Framework Benchmarks 仓库中找到。