【问题标题】:Compiling Assemblyscript to Wasm, performance将 Assemblyscript 编译为 Wasm,性能
【发布时间】:2018-08-19 13:17:09
【问题描述】:

我看到已经有一个编译器可以将 TypeScript 编译为 WebAssembly (Wasm),here is the link

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

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

问题:

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

【问题讨论】:

  • 我认为您应该将 TypeScript 替换为 AssemblyScript 以避免混淆。

标签: javascript typescript webassembly


【解决方案1】:

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

(另外,我不知道 TypeScript-to-Wasm 编译器。您可能正在考虑 AssemblyScript,但是虽然它重用了 TypeScript 的语法,但它的语义却大不相同。)

【讨论】:

【解决方案2】:

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

几个重大差异的示例是:在 AssemblyScript 中不能有闭包。你也不能有联合类型。

【讨论】:

猜你喜欢
  • 2017-09-27
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 2020-11-11
  • 2020-07-13
  • 2020-11-04
  • 1970-01-01
相关资源
最近更新 更多