编译汇编脚本到Wasm,性能



我看到已经有一个编译器可以将TypeScript编译为WebAssembly(Wasm(,这里是链接。

我还从多个来源听说,由于JavaScript的动态性质和动态类型,将JS编译为Wasm是不可行的。

但是,TypeScript 确实提供了 JavaScript 所缺乏的类型化变量。在未来,Wasm甚至可以与DOM交互/与其他Web API交互。

问题:

与用JavaScript编写Web应用程序相比,用TypeScript编写应用程序并将其编译为Wasm会提供任何性能优势吗?

现实的答案是:不。关于TypeScript有一些常见的误解。一是它不如JavaScript那么动态。事实并非如此,它实际上和JS一样动态,因为它包含了JavaScript的所有语义(包括所有疯狂的极端情况(,而且它的类型系统太弱和不健全,无法保证普通的离线编译器可用于静态优化。充其量,这些类型可以用作动态 VM 可以尝试首先优化的提示,因为他们知道它们可能会不正确。

(另外,我不知道TypeScript-to-Wasm编译器。你可能想到的是AssemblyScript,但是虽然它重用了TypeScript的语法,但它的语义却大不相同。

你在问题中引用了AssemblyScript。汇编脚本是打字稿的一个极其严格的子集。不要将它与打字稿混淆,它是自己的。最大的区别在于Typescript包含了Javascript中我们都知道和喜爱(讨厌(的所有动态属性。另一方面,AssemblyScript 则没有。

几个大区别的例子是;在AssemblyScript中,你不能有闭包。您也不能有联合类型。

最新更新