Bun (Elysia) vs Rust (Actix) 性能实测:新贵与老炮的极限对决
我拿 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)