Lobsters | 📄 原文链接 | 2026-08-21 收录

为什么把 Rust 编译到 WebAssembly 那么慢:一个已知的 LLVM 缺陷

来源:00f.net — 2026-08-19

📋 概述

作者解释了把 Rust 编译到 WebAssembly 时开启调试信息(debug info)会异常缓慢的根因:一个已知但修复不完整的 LLVM 缺陷。开启完整 DWARF 调试信息后,LLVM 会在中间表示中插入大量 DBG_VALUE 记录,而 WebAssembly 是栈式机器,指令需要大量搬运,每个移动的指令都必须同步移动或更新其调试记录。一个 40 行的复现程序在开启调试信息后要 50 秒才能编译完,而不开只要 1.5 秒,某些 crate(如 ed25519-compact)的差距可达约 40 倍。

🔑 核心要点

💡 金句

在栈式机器上,每一行被移动的指令都要背上一串调试记录。
← 返回 Lobsters 首页