网易首页 > 网易号 > 正文 申请入驻

Matt Keeter测出6.5倍性能差距

0
分享至

一个Rust写的字节码虚拟机,用尾调用(tail-calling)风格实现,居然比手写汇编还快。Matt Keeter在自己的博客上发了这组数据,结论是:WebAssembly的尾调用支持有问题,V8、SpiderMonkey、Wasmtime都栽了。

但有人不服。Wastrel的作者重跑了一遍实验,数据把故事整个翻过来了。

1.5倍 vs 6.5倍:同一套代码,不同引擎差出4倍

Matt的测试对象叫Raven,一个教学用的字节码虚拟机。他写了三个版本:Rust写的switch-based解释器、Rust写的尾调用解释器、以及手写汇编版本。在原生编译环境下,尾调用版本比switch-based快1.5倍,几乎追平手写汇编。

问题出在WebAssembly。Matt把同样的Rust代码编译成Wasm,分别用V8、SpiderMonkey、Wasmtime跑。结果尾调用解释器比手写汇编慢了6.5倍,switch-based也慢了4.3倍。他得出一个结论:Wasm的栈机器模型和尾调用模式八字不合。

Wastrel的作者在AMD Ryzen Threadripper PRO 5955WX上复现了这个实验,但加了一组数据——用Wastrel引擎跑同样的Wasm二进制文件。尾调用解释器的开销从6.5倍骤降到2.3倍,switch-based也从4.3倍降到2.4倍。

差距从"不能用"变成了"能用,但还有油水可挤"。

寄存器里的秘密:为什么其他引擎慢了3倍

Wastrel作者看了眼自己生成的机器码,发现了一个可优化的点:主内存地址的struct被反复从内存加载,没能驻留在寄存器里。这是个实现细节问题,不是Wasm指令集的问题。

换句话说,V8、SpiderMonkey、Wasmtime的尾调用性能差,是具体实现的 accident(意外),不是Wasm抽象层的缺陷。尾调用解释器生成的汇编模式本身没问题,映射到Wasm栈机器上也理应高效。

Matt的原始测试其实埋了一个伏笔:他在AArch64平台上测过,尾调用解释器甚至超过了手写汇编。这说明架构差异会放大或缩小引擎的实现瑕疵,但核心模式是站得住脚的。

性能预言家的价值:当基准测试说谎时

这件事的吊诡之处在于:Matt的测试完全可复现,数据也真实,但结论被推翻了。问题出在哪?

他把"Wasmtime的表现"等同于"WebAssembly的能力"。这是最常见的基准测试陷阱——测量的是特定实现,却归因于抽象规范。Wastrel用2.3倍的数据证明,同样的Wasm字节码可以跑得更快,瓶颈在引擎而非指令集。

这对开发者有实际意义。如果你在Wasm里写解释器,不必因为V8的当前表现而放弃尾调用风格。模式是对的,只是要等实现跟上。或者,选一个实现更好的引擎。

Matt的实验设计其实相当严谨:控制变量、多平台验证、代码开源。但再严谨的实验也受限于测量工具的盲区。他测了三家主流引擎,恰好漏掉了Wastrel这个异类——而Wastrel的存在,把"Wasm不行"变成了"主流引擎还没做好"。

2.4倍开销从哪来:32位指针省下的内存访问

Wastrel作者还注意到一个反直觉的点:Wasm版本理论上应该更快,因为Wasm用32位指针,原生代码用64位。内存访问更窄,缓存更友好,这部分收益抵消了一部分虚拟化开销。

但2.4倍的开销依然存在。作者推测主内存地址struct的寄存器分配是主因——每次访问内存都要重新解引用这个struct,而原生编译器能把地址直接内联到代码里。这是Wasm沙箱模型的代价,也是Wastrel下一步要啃的硬骨头。

对比数据:Wasmtime的4.3倍和6.5倍,说明它在switch-based和尾调用两条路径上都有额外的低效。可能是间接调用实现的问题,也可能是尾调用到循环的转换没做好。具体根因需要看它们的机器码生成,但现象很明确——同样的Wasm文件,不同引擎能差出近3倍。

尾调用解释器为什么快:分支预测器的甜蜜点

回到原生环境,尾调用解释器凭什么比switch-based快1.5倍,甚至追上汇编?

核心机制是间接分支消除。switch-based解释器每次取指令都要做一次大的switch跳转,分支预测器很难猜对。尾调用风格把每个指令实现成独立函数,用尾调用串联,编译器能生成更线性的代码流。

现代CPU的分支预测器对这种模式很友好。Matt的手写汇编用了直接线程化(direct threading),本质上也是把指令地址直接编码在流里,减少预测失败。Rust编译器生成的尾调用代码,恰好撞上了类似的优化路径。

在AArch64上反超汇编,说明编译器在某些架构上比人更会利用指令级并行。手写汇编的优化假设可能和具体微架构错配,而编译器的保守策略反而更稳健。

Wastrel的2.3倍是终点还是起点

作者自己说,2.3倍还有下降空间。主内存地址struct的寄存器分配是个已知问题,修掉之后可能逼近2倍。再往下,就要看Wasm的内存模型和原生模型的本质差异了。

这个案例给性能优化者的启示是:先怀疑测量工具,再怀疑自己的代码。Matt花了时间优化Raven的实现,但没怀疑过Wasm引擎的成熟度。Wastrel的数据把优化责任从"你的算法"转移到了"我的引擎"。

对于在浏览器里跑复杂计算的人,这意味着不必过早妥协。尾调用解释器在理论上是好设计,实践上只需要挑对引擎,或者给主流引擎一点进化时间。

Matt Keeter在博客评论区会怎么回应这个2.3倍?他会不会也跑一遍Wastrel验证?数据对决的下一步,可能比原始实验更有趣。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
12年江西男子淘到一破书,有人出500万没卖出,1年后以2600万成交

12年江西男子淘到一破书,有人出500万没卖出,1年后以2600万成交

谈史论天地
2026-04-05 18:20:59
保密期限终到期,中央首长透露:毛岸英真相,可以向外界公开了

保密期限终到期,中央首长透露:毛岸英真相,可以向外界公开了

历史点行
2026-03-29 13:38:28
研究表明:男性嫖娼率6.4%,女性出轨率15%,且越有钱越开放!

研究表明:男性嫖娼率6.4%,女性出轨率15%,且越有钱越开放!

黯泉
2026-04-01 17:28:39
随着巴萨0-2,利物浦0-2,欧冠最新夺冠赔率出炉:阿森纳第1,皇马第6

随着巴萨0-2,利物浦0-2,欧冠最新夺冠赔率出炉:阿森纳第1,皇马第6

侧身凌空斩
2026-04-09 05:52:03
巴黎2-0利物浦,克瓦拉茨赫利亚一条龙,杜埃建功,利物浦0射正

巴黎2-0利物浦,克瓦拉茨赫利亚一条龙,杜埃建功,利物浦0射正

懂球帝
2026-04-09 04:58:22
乌克兰攻击俄最大的沃罗涅日化工厂!跨境攻击首次超过俄军

乌克兰攻击俄最大的沃罗涅日化工厂!跨境攻击首次超过俄军

项鹏飞
2026-04-07 19:12:08
一场晚宴改变岛内风向,郑丽文勇敢表态获欣赏,萧旭岑被集体心疼

一场晚宴改变岛内风向,郑丽文勇敢表态获欣赏,萧旭岑被集体心疼

阅微札记
2026-04-09 10:16:11
每吃一次,猝死就快一步?医生:这4物是心源性猝死的“催化剂”

每吃一次,猝死就快一步?医生:这4物是心源性猝死的“催化剂”

健康科普365
2026-04-03 22:00:07
没有这种食物,你的肌肉将消失!医生:60岁后恢复肌力的7种食物

没有这种食物,你的肌肉将消失!医生:60岁后恢复肌力的7种食物

健康之光
2026-01-04 09:31:45
陪玩陪睡算什么!黄一鸣再曝“丑闻”,王思聪倒霉了,杨颖被牵连

陪玩陪睡算什么!黄一鸣再曝“丑闻”,王思聪倒霉了,杨颖被牵连

刘森森
2026-04-09 04:05:06
癌细胞最爱的5大食物,很多人天天吃!医生提醒:再馋也要管住嘴

癌细胞最爱的5大食物,很多人天天吃!医生提醒:再馋也要管住嘴

孟大夫之家1
2026-02-23 18:33:03
于谦被曝成老赖,坐拥北京 60 亩马场,巨额债务真相藏不住了

于谦被曝成老赖,坐拥北京 60 亩马场,巨额债务真相藏不住了

橙星文娱
2026-04-06 13:09:46
白宫:特朗普认为北约未通过“考验” 将与吕特讨论“退群”

白宫:特朗普认为北约未通过“考验” 将与吕特讨论“退群”

财联社
2026-04-09 03:21:04
岳西害死6岁孩子的凶手,是隔壁35岁少妇!长着一张人畜无害的脸

岳西害死6岁孩子的凶手,是隔壁35岁少妇!长着一张人畜无害的脸

火山詩话
2026-04-08 05:25:40
语文课不会教的:念奴娇、如梦令,千奇百怪的词牌名是怎么来的?

语文课不会教的:念奴娇、如梦令,千奇百怪的词牌名是怎么来的?

长风文史
2026-03-24 17:09:58
一个人顶一家公司!他光去年就结算了600亿!

一个人顶一家公司!他光去年就结算了600亿!

奋斗在韩国
2026-04-08 10:05:26
孙中山遗体,为何从开始的永久保存供人瞻仰,转变为混凝土封固

孙中山遗体,为何从开始的永久保存供人瞻仰,转变为混凝土封固

云霄纪史观
2026-03-31 16:47:50
公交车内婚恋中介广告引争议 当地回应:正在排查并要求紧急撤下

公交车内婚恋中介广告引争议 当地回应:正在排查并要求紧急撤下

极目新闻
2026-04-08 22:23:52
TA:英超欧冠资格争夺含金量不足,却折射联赛竞争愈发激烈

TA:英超欧冠资格争夺含金量不足,却折射联赛竞争愈发激烈

懂球帝
2026-04-09 13:16:19
巴塞罗那0-2马竞,赛后评分:不是马竞球员第1,巴塞罗那10号第1

巴塞罗那0-2马竞,赛后评分:不是马竞球员第1,巴塞罗那10号第1

侧身凌空斩
2026-04-09 04:56:44
2026-04-09 13:52:49
像素与芯片
像素与芯片
有态度网友ytd
1276文章数 9关注度
往期回顾 全部

科技要闻

Meta凌晨首发闭源大模型 扎克伯格又行了?

头条要闻

达赖深度卷入爱泼斯坦权色网 印媒再披露惊人新证据

头条要闻

达赖深度卷入爱泼斯坦权色网 印媒再披露惊人新证据

体育要闻

8万人面前心脏骤停 现在他还站在球场上

娱乐要闻

金莎官宣结婚 与老公孙丞潇相差18岁

财经要闻

谈判基础已被破坏!霍尔木兹海峡关闭

汽车要闻

8155芯片+L2智驾 瑞虎5运动版上市 置换补贴价6.79万元起

态度原创

旅游
健康
亲子
公开课
军事航空

旅游要闻

“北京超级周末”空降!最全攻略来了,还有专属优惠→

干细胞抗衰4大误区,90%的人都中招

亲子要闻

这么一群软萌小羊谁看了不想一键抱走!

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

黎真主党发射火箭弹 回应以违反停火协议

无障碍浏览 进入关怀版