我拿 Bun 和 Rust 干了一架,结果 Bun 的血条直接被打没了…

哥们儿,我跟你讲,在咱们程序员这圈儿里,总有那么几个话题能吵翻天。比如 “PHP是不是最好的语言?”,再比如,今天的主角:JavaScript的新贵Bun,和性能界的老炮儿Rust,到底谁更快?

光说不练假把式。很多人都觉得,这还用问?肯定是Rust啊!

没错,但我就特别好奇,这个“快”,到底是快一点点,还是快到离谱?所以,我搭了个擂台,让它俩正儿八经地干了一架。

结果嘛……这么说吧,场面一度非常“残忍”。

先介绍下两位选手

  • 红方选手:Bun (配Elysia框架)

    • 你可以把它想象成JS圈儿里现在最火的“小鲜肉”,人长得帅(开发体验好),功夫还很全(自带一堆工具),号称速度超快,拳打Node.js,脚踢Deno,是无数前端和全栈开发者的“新宠”。
  • 蓝方选手:Rust (配Actix框架)

    • 这位就不是小鲜肉了,这是性能界硬核得不能再硬核的“重量级拳王”。没啥花里胡哨的,主打一个稳、准、狠。它的字典里就没有“内存泄漏”和“性能妥协”这几个字,是系统级、底层开发领域的绝对霸主。

擂台规则:不服跑个分!

为了公平,我给它俩安排了同一个任务:做一个URL短链服务。这活儿特能考验一个后端框架的真实水平,因为请求量一上来,谁在“裸泳”就一清二楚了。

测试环境是我的M4 MacBook Air,数据库用的是PostgreSQL。

我让10个、50个、甚至100个虚拟用户同时对着它俩疯狂发请求,看看谁先撑不住。

战况揭晓:这哪是比赛,这是单方面吊打啊!

第一项,比“出拳速度”(吞吐量RPS)

简单说,就是一秒钟能处理多少个请求。

我跟你说,当100个用户一起上的时候,我看到数据都惊了:

  • Bun/Elysia:14,295 RPS
  • Rust/Actix:143,514 RPS

你没看错,小数点也没点错。Rust的出拳速度,是Bun的整整10倍!

Bun同学在旁边累得呼哧带喘,Rust大哥在那儿跟没事人一样,甚至还想点根烟。这血条,基本上算是被打空了。

RPS Chart

第二项,比“反应速度”(延迟Latency)

这项更要命,它决定了你的用户体验顺不顺滑。

就好比,你点个按钮,Rust那边“唰”一下就响应了,P99延迟才11.97毫秒,你根本感觉不到。

Bun呢?在高压下就有点“反应迟钝”了,P99延迟干到了111.95毫秒。这个延迟,用户是能明显感觉到的,就像网突然卡了一下。对于追求丝滑体验的应用来说,这挺致命的。 Latency Chart

所以呢?咱是不是以后就不用Bun了?

别急着下结论!技术这东西,从来不是非黑即白。

Rust是快,快到变态。但这玩意儿的学习曲线也一样“变态”,想写好它,得掉不少头发。

这就好比你出门,去楼下便利店买瓶水,你肯定不会开一辆F1赛车去吧?虽然F1贼快,但你光是启动、热车、停车就得折腾半天,人家骑共享单车的哥们儿早都买完水回家打游戏了。

这次对决,真正告诉我们的是“看菜下饭”:

  • 啥时候用Bun?

    • 当你需要快速把产品做出来的时候!搞个创业项目、做个MVP、快速迭代功能,Bun和它背后的整个JS生态,能让你爽到飞起。开发效率高,社区庞大,遇到问题分分钟就能找到解决方案。在绝大多数场景下,它的性能都绰绰有余。
  • 啥时候必须上Rust?

    • 当你的项目是那种“公司命脉”级的核心业务时!比如交易系统、支付网关、或者任何预见到未来会有毁天灭地般流量的场景。这时候,你牺牲一点开发速度,换来的是极致的性能、铁一般的稳定性和晚上能睡得踏实的安心感。

总之一句话:

用Bun,图的是今天爽;用Rust,为的是明天稳。

想看更多这种用大白话聊技术的干货?来我这儿坐坐。

关注梦兽编程微信公众号,解锁更多黑科技。


原文参考:URL shortener service benchmarking: Bun (Elysia) vs Rust (Actix)