性能比拼: Rust vs C++

本内容是对知名性能评测博主 Anton Putra 1个月前 Rust vs C++ Performance 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准

介绍

在本视频中,将对比 RustC++

会使用 Axum 框架的一个稍微改进的版本,该框架基于 HyperTokio 运行时,而对于 C++ ,我会使用 Drogon框架

我们将测量两款应用的 延迟(latency)吞吐量(throughput) ,以及 CPU 和内存使用情况(CPU & memory usage)

AWS 上运行测试,每个应用都部署在 m7a.large 实例上,该实例配备 2 个 CPU 和 8GB 内存

此外,我还设置了相同数量的线程,每个应用均使用 2 个线程,如你可以在终端中看到的那样。


测试

好了,我们现在来运行测试。

整个基准测试持续了 大约 2 小时 ,但(剪辑视频时)我将其压缩到了仅 几分钟

另外,如果你能对正在测试的应用进行优化,请提交 PR (Pull Request),我会 尽快合并重新运行测试

同时,我也需要大家的帮助,为 C++ 应用 添加额外的功能。

在测试的前半程,我注意到 两者的延迟表现非常接近,这在 Web 框架中是很少见的。

好了,我再运行 1 分钟,然后逐一分析每个图表。


结果分析

1. 吞吐量(Throughput)

C++ 仅达到 142,000 请求/秒

改进后的 Axum 达到了 176,000 请求/秒

这次 Rust 表现更好 ,相比于之前 Rust vs. Go 的基准测试有所提升,

主要原因是:

  • 这次使用了 更小的负载(payload)
  • 我接受了一些 PR,提升了整体性能。
2. 延迟(Latency)

Rust 也在延迟方面表现更优

更低的延迟 始终是更好的,特别是对于 面向客户端的应用 来说。

3. CPU 使用情况(CPU Usage)
4. 内存使用情况(Memory Usage)

结论

这一次,Rust 的整体表现优于 C++

但我希望能收到更多 PR ,进一步优化 C++ 的性能

并为其 添加更多功能

只是第一轮测试 ,接下来的 第二轮测试 将会包含:

  • 数据库测试
  • 可能会增加更多使用场景
相关推荐
君义_noip1 天前
信息学奥赛一本通 4163:【GESP2512七级】城市规划 | 洛谷 P14921 [GESP202512 七级] 城市规划
c++·算法·图论·gesp·信息学奥赛
0xDevNull1 天前
Spring Boot 3.x 整合 Nacos 全栈实战教程
java·spring boot·nacos
落木萧萧8251 天前
MyBatisGX 示例工程:CRUD + 关联查询完整演示
java·后端
不想写代码的星星1 天前
C++ 的花括号有多狂?std::initializer_list 那些不讲武德的事儿
c++
两年半的个人练习生^_^1 天前
每日一学:设计模式之原型模式
java·开发语言·设计模式·原型模式
biubiubiu07061 天前
Maven 父子工程 SpringBoot 多模块
java·spring boot·maven
elseif1231 天前
初学者必背【考点清单(大全)】【上篇】
开发语言·c++·笔记·学习·循环结构·分支结构·考纲
并不喜欢吃鱼1 天前
从零开始C++----二.(下篇)模版进阶与编译全过程的复习
开发语言·c++
智者知已应修善业1 天前
【51单片机按键控制流水灯+数码管显示按键次数】2023-6-15
c++·经验分享·笔记·算法·51单片机
汉克老师1 天前
GESP2023年12月认证C++三级( 第三部分编程题(1、小猫分鱼))
c++·算法·模拟算法·枚举算法·gesp三级·gesp3级