感慨一下, rust 的性能竟然这么好

2022-08-02 09:35:09 +08:00
 ecloud
本公司某个业务逻辑,大体上是 redis 里面 pop 一条数据,做一个简单的业务转换,生成的新数据 push 回 redis

纯 C 版本是 20+us ,oc ( mrc )版本是 100+us ,最新用 rust 重构的我昨天刚测试了下,19us

也没有做什么特别的优化,只是开了 lto

好吧,我感觉是写 C 的那个老哥 memcpy 用的太多了,如果多用指针可能会更快。但是你 TM 真的敢在 C 里面飞指针?

还有一个可能的原因,C 版本的数据都是用 sprintf 来拼接的字符串,rust 版本直接使用的一个库,该库的底层逻辑是拼接&[u8]
7886 次点击
所在节点    Rust
18 条回复
miniliuke
2022-08-02 09:42:14 +08:00
rust 约等于加过安全限制的 C++,由于一些限制 safe 代码的上限和 C/C++还是有一些差距,但是下限高得多
Leviathann
2022-08-02 09:47:15 +08:00
安全抽象的威力,ripgrep 也已经展示过了
stephenyin
2022-08-02 10:14:27 +08:00
理论上如果 C 执行慢于 Rust ,一定是 C 写得不够好。不过 Rust 确实优化的很不错。
changnet
2022-08-02 10:14:59 +08:00
怎么不敢在 C 里面用指针?不用指针写什么 C

我写 C 经常各种强转,比如把一个 int32 拷贝进一个 buffer 缓冲区,直接就把 char *类型的缓冲区强转成 int32 *来进行赋值,用 memcpy 什么的慢得跟个啥似的。只要控制好应用场景、硬件架构就不会有什么问题

用 C 不就是这点好处么
ecloud
2022-08-02 10:23:05 +08:00
@stephenyin 道理的确是这个道理。不过在普遍低能的某行业里,我门之前的那个 C 程序的 20+us 的性能已经傲视群雄了,其实市面上大部分的 C++程序员也就会一些 boost 和 qt 罢了,双向链表不一定能写出来呢。我们上游第三方的 sdk 还一大堆 cp936/gbk 的中文 log/注释到现在都没人改
Morii
2022-08-02 10:31:42 +08:00
看起来之前 C 的版本可优化的地方很多
ColorfulBoar
2022-08-02 13:02:08 +08:00
min
2022-08-02 13:50:50 +08:00
用 c 、c++不动态分配内存? 感觉是很奇怪的用法啊
wamson
2022-08-02 15:10:40 +08:00
追性能但又不想用 cpp 的话,我会选 go 。话说最近不是出了个 carbon 么(逃
ipwx
2022-08-02 15:12:18 +08:00
我不仅敢在 C 语言里面飞指针,我还敢在 C++ 里面飞指针(逃
novolunt
2022-08-02 15:31:41 +08:00
novolunt
2022-08-02 15:33:23 +08:00
@Morii 最近的 zig 各项性能都比 c/rust 强
lusi1990
2022-08-02 15:39:00 +08:00
我觉得这时候瓶颈在 redis 读写上
Nugine0
2022-08-02 15:59:51 +08:00
@changnet 强转时不考虑对齐吗?小心哪天爆炸……
Nugine0
2022-08-02 16:00:44 +08:00
@novolunt 然而用 zig 写的 bun 正苦于修 segfault
DonkeyBenjamin
2022-08-04 10:21:28 +08:00
想转 carbon/zig 的赶紧去添砖加瓦啊,1.0 还没出,正需要 contributors 呢😄
wewewefff
2022-09-08 11:32:08 +08:00
现在都是考虑用 rust 重构了
JohnBull
2022-09-22 00:48:30 +08:00
飞指针咋了?飞指针+写时拷贝走起~~ ^0^

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/870115

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX