V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cj323
V2EX  ›  程序员

go 写的 fzf 如何做到用比 rust 重写版快几倍

  •  
  •   cj323 · 21 天前 · 3912 次点击

    skim 作者说 fzf 虽然是用 GC 语言 go 写的,但是数据量上去后比自己的 rust 实现快 2-3+倍,而且占用一半的内存。还说 rust 在 share memory 上能优化的地方受限。

    这是如何做到的,rust 又有哪些地方不好优化内存?纯好奇

    https://github.com/skim-rs/skim/issues/317#issuecomment-652492431

    fzf 源码: https://github.com/junegunn/fzf

    12 条回复    2025-08-18 17:31:36 +08:00
    mayli
        1
    mayli  
       21 天前 via Android
    因为重写版优化不够
    wuruxu
        2
    wuruxu  
       21 天前
    rust 实现还有优化空间,带 GC 的语言,明显会有额外的性能损耗
    BeiChuanAlex
        3
    BeiChuanAlex  
       21 天前
    不可能,如果是这样的话,rust 版本就是没写好
    DefoliationM
        4
    DefoliationM  
       21 天前
    不知道区别在哪,但能猜到几个原因。大量使用存在堆上的临时对象,因为所有权的原因离开作用域内存即释放,大量重复销毁和申请内存,rust 可能需要使用内存池进行优化。
    w568w
        5
    w568w  
       21 天前   ❤️ 10
    没有人说 Rust 一定比 Go 快啊,GC 语言一定比 GC-free 慢是刻板印象,得改。准确的说法是「 GC-free 的语言,性能上限比 GC 语言高」。

    也就是说,如果肯优化,Rust 一定能做到比 Go 快。

    只不过 Rust 默认的编程范式不鼓励池化管理,在 I/O 和 Memory Burst 场景下,延迟比较吃亏。通俗地说就是 GC 语言鼓励「积极分配,一次性全部释放」,GC-free 鼓励「用完立刻释放」。

    对了,按这个 issue 下引用的链接,你这个是 2020 年的 issue ,2022 年 skim 就已经优化到和 fzf 一样快了,且内存占用更少: https://github.com/skim-rs/skim/issues/509
    CatCode
        6
    CatCode  
       21 天前   ❤️ 1
    现在什么猫啊狗啊都写 Rust 。
    遇到生命周期、所有权之类的问题一言不合就 Clone ,甚至在一些广泛使用的 crate 里面都有类似的问题。
    见啥都 Clone ,Rust 开了 Release 都不一定能比纯 Python 快。
    R18
        7
    R18  
       21 天前
    rust 要会写,最近遇到一个项目,用 rust 写的一塌糊涂,内存占用奇高。
    suruiran
        8
    suruiran  
       21 天前 via Android
    这种软件的性能瓶颈在磁盘 IO 吧,而且都是短时间执行的 gc 也没有影响。
    visper
        9
    visper  
       20 天前
    大概是 rust 里面 clone 太多了。而 go 里面都自动共享了。
    justdoit123
        10
    justdoit123  
       20 天前
    clone clone clone~

    性能极致的地方,还是需要一些 unsafe 之类的操作。
    wangtian2020
        11
    wangtian2020  
       20 天前
    语言决定上下限,耐不住操作工水平不够
    horou
        12
    horou  
       20 天前
    只能说明他不会 rust
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2425 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 15:47 · PVG 23:47 · LAX 08:47 · JFK 11:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.