我听说Webassembly将成为静态类型语言的编译目标,并且可以在浏览器中运行。有人声称它可以以(接近(本机速度在浏览器中运行。这是因为Wasm相对接近相应机器的机器指令。
但是,有两种类型的语言可以编译为 Wasm:
- 带有垃圾回收的语言,例如Java,C#
- 没有垃圾回收的语言,例如 C/C++、Rust
我目前的理解是,垃圾回收是一个对性能产生负面影响的过程,因为它需要 CPU 周期。
问题:
如果 Wasm 程序是用具有垃圾回收的语言编写的,或者用没有垃圾回收的语言编写的,性能会有所不同吗?
GC 提案旨在严格按使用量付费。也就是说,不使用相关指令的程序不应受到任何影响。
至少就Wasm的当前浏览器实现而言,另一种思考方式是,GC提案只是为您提供了一种访问JavaScript值所在的相同堆的方法。无论 Wasm 是否使用它,该堆都存在,当它不使用时,与当前情况没有区别。