我拿 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大哥在那儿跟没事人一样,甚至还想点根烟。这血条,基本上算是被打空了。
第二项,比“反应速度”(延迟Latency)
这项更要命,它决定了你的用户体验顺不顺滑。
就好比,你点个按钮,Rust那边“唰”一下就响应了,P99延迟才11.97毫秒,你根本感觉不到。
Bun呢?在高压下就有点“反应迟钝”了,P99延迟干到了111.95毫秒。这个延迟,用户是能明显感觉到的,就像网突然卡了一下。对于追求丝滑体验的应用来说,这挺致命的。
所以呢?咱是不是以后就不用Bun了?
别急着下结论!技术这东西,从来不是非黑即白。
Rust是快,快到变态。但这玩意儿的学习曲线也一样“变态”,想写好它,得掉不少头发。
这就好比你出门,去楼下便利店买瓶水,你肯定不会开一辆F1赛车去吧?虽然F1贼快,但你光是启动、热车、停车就得折腾半天,人家骑共享单车的哥们儿早都买完水回家打游戏了。
这次对决,真正告诉我们的是“看菜下饭”:
啥时候用Bun?
- 当你需要快速把产品做出来的时候!搞个创业项目、做个MVP、快速迭代功能,Bun和它背后的整个JS生态,能让你爽到飞起。开发效率高,社区庞大,遇到问题分分钟就能找到解决方案。在绝大多数场景下,它的性能都绰绰有余。
啥时候必须上Rust?
- 当你的项目是那种“公司命脉”级的核心业务时!比如交易系统、支付网关、或者任何预见到未来会有毁天灭地般流量的场景。这时候,你牺牲一点开发速度,换来的是极致的性能、铁一般的稳定性和晚上能睡得踏实的安心感。
总之一句话:
用Bun,图的是今天爽;用Rust,为的是明天稳。
想看更多这种用大白话聊技术的干货?来我这儿坐坐。
关注梦兽编程微信公众号,解锁更多黑科技。
原文参考:URL shortener service benchmarking: Bun (Elysia) vs Rust (Actix)