感慨一下, rust 的性能竟然这么好 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ecloud
V2EX    Rust

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

  •  
  •   ecloud 2022-08-02 09:35:09 +08:00 9149 次点击
    这是一个创建于 1244 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本公司某个业务逻辑,大体上是 redis 里面 pop 一条数据,做一个简单的业务转换,生成的新数据 push 回 redis

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

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

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

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

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

    用 C 不就是这点好处么
    ecloud
        5
    ecloud  
    OP
       2022-08-02 10:23:05 +08:00
    @stephenyin 道理的确是这个道理。不过在普遍低能的某行业里,我门之前的那个 C 程序的 20+us 的性能已经傲视群雄了,其实市面上大部分的 C++程序员也就会一些 boost 和 qt 罢了,双向链表不一定能写出来呢。我们上游第三方的 sdk 还一大堆 cp936/gbk 的中文 log/注释到现在都没人改
    28Sv0ngQfIE7Yloe
        6
    28Sv0ngQfIE7Yloe  
       2022-08-02 10:31:42 +08:00
    看起来之前 C 的版本可优化的地方很多
    ColorfulBoar
        7
    ColorfulBoar  
       2022-08-02 13:02:08 +08:00   3
    min
        8
    min  
       2022-08-02 13:50:50 +08:00
    用 c 、c++不动态分配内存? 感觉是很奇怪的用法啊
    wamson
        9
    wamson  
       2022-08-02 15:10:40 +08:00 via iPhone
    追性能但又不想用 cpp 的话,我会选 go 。话说最近不是出了个 carbon 么(逃
    ipwx
        10
    ipwx  
       2022-08-02 15:12:18 +08:00   3
    我不仅敢在 C 语言里面飞指针,我还敢在 C++ 里面飞指针(逃
    novolunt
        12
    novolunt  
       2022-08-02 15:33:23 +08:00
    @Morii 最近的 zig 各项性能都比 c/rust 强
    lusi1990
        13
    lusi1990  
       2022-08-02 15:39:00 +08:00 via Android
    我觉得这时候瓶颈在 redis 读写上
    Nugine0
        14
    Nugine0  
       2022-08-02 15:59:51 +08:00 via Android
    @changnet 强转时不考虑对齐吗?小心哪天爆炸……
    Nugine0
        15
    Nugine0  
       2022-08-02 16:00:44 +08:00 via Android
    @novolunt 然而用 zig 写的 bun 正苦于修 segfault
    DonkeyBenjamin
        16
    DonkeyBenjamin  
       2022-08-04 10:21:28 +08:00
    想转 carbon/zig 的赶紧去添砖加瓦啊,1.0 还没出,正需要 contributors 呢
    wewewefff
        17
    wewewefff  
       2022-09-08 11:32:08 +08:00
    现在都是考虑用 rust 重构了
    JohnBull
        18
    JohnBull  
       2022-09-22 00:48:30 +08:00
    飞指针咋了?飞指针+写时拷贝走起~~ ^0^
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2662 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 07:20 PVG 15:20 LAX 23:20 JFK 02:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86