库拉 - 知识铺 -- 知识铺
[
当 WebAssembly 快得多时,为什么我们仍然使用 JavaScript?
](https://www.quora.com/Why-do-we-still-use-JavaScript-when-WebAssembly-is-much-faster)
快多了…例如,开始时的速度快了近 20%?
天哪,你肯定不敢相信!如果我使用 WebAssembly,我可能能够在 8 毫秒而不是 10 毫秒内看到响应!
需要注意的重要一点是,等待网页的大部分时间与JavaScript的速度无关。存在服务器延迟、在最小化网络请求方面糟糕的页面设计以及 DOM 渲染时间。JavaScript 很少是瓶颈。因此,为了更新上述示例,页面可能在 899 毫秒而不是 900 毫秒内呈现。以将代码移植到 C++ 的大量工作为代价,这些工作可以更好地用于实际优化页面,因为它实际上会有所帮助。
在某些用例中,WebAssembly 可以更快。它对于游戏很有用,无论如何,这些游戏通常已经是用 C++ 编写的。但在大多数情况下,WebAssembly 只是意味着“你可以编译 C++ 以在网页中使用”。
你知道吗?我用 C++ 开发了 GUI(图形用户界面,即像网页一样),用 C++ 开发 GUI 很糟糕。并不是说HTML+CSS+JavaScript是完美的,但它要好得多。而且更加灵活。而且调试起来要容易得多。还有更多的组件驱动。这个生态系统实际上是历史上任何语言中最大的生态系统。
其他人提到,你还不能从 WebAssembly 操作 DOM,但已经存在几个堆栈来处理这个桥。
而且有超过一百种语言可以编译成 JavaScript,所以如果 JavaScript 是一种如此糟糕的语言,我们是不是不会看到一种具有坚实现代工程原理的语言的崛起?哦,是的,我们是: 打字稿.
正如我上面提到的,大多数网站都很慢,不是因为 JavaScript,所以即使你可以直接从 WebAssembly 操作 DOM,并且你将代码移植到 C++,你甚至很难注意到速度差异。除了 DOM 和网络问题之外,可能下一个最常见的问题是正在使用的算法。通过将 JavaScript 转换为 C++ 来使您的代码快 10 倍是好的,但是仅仅通过稍微改变 JavaScript 中的算法来使其快 100 倍,就可以少得多的工作量以获得更好的结果。
那么,我们仍然使用 JavaScript 和编译为 JavaScript 的语言(如 TypeScript)的真正原因是什么?它更简单,更强大,足够快,生态系统无与伦比。除了游戏和专业库之外,我认为 WebAssembly 在可预见的未来不会有所作为。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek001/post/20240710/%E5%BA%93%E6%8B%89-%E7%9F%A5%E8%AF%86%E9%93%BA--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com