首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果用C编写而不是WebAssembly,那么运行得更快吗?

问如果用C编写而不是WebAssembly,那么运行得更快吗?
EN

Stack Overflow用户
提问于 2019-12-06 02:53:24
回答 2查看 2.4K关注 0票数 5

有一长串语言可以被编译成Wasm。用类似于C或Rust的语言编写有什么性能上的提高吗?或者是因为它正在被编译成Wasm,所以一切都是一样的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-06 03:25:59

简单回答:是的,因为语言本身不是编译成Wasm,而是它的解释器.。

说Python支持,并不总是意味着相同的意思。首先,Python不是一种编译语言,而是一种脚本语言。不要期望脚本语言会被编译成本机语言(或Wasm)语言,因为它不是这样工作的。

那么Python是如何支持瓦斯的呢?Python解释器/运行时(如用C编写的cpython )被编译为Wasm。有两种流行的Python运行时支持Python:吡啶类和用于micropython的Wasm端口 (除了这两种运行时,在浏览器中运行Python还有很大的努力)。它们都是解释器,将Python翻译成自己的字节码,然后在Wasm中执行字节码。当然,在本机环境中,会出现与cpython一样的巨大性能损失。

票数 7
EN

Stack Overflow用户

发布于 2019-12-06 03:09:49

编译到WebAssembly基本上只是模拟针对虚拟硬件的一种特殊形式的组装。当你读到“可以将X语言编译成Wasm”时,并不总是意味着语言实际上是直接编译成Wasm的。在Python的例子中,据我所知,它意味着“他们将Python解释器编译成Wasm”(例如CPython,PyPy),所以整个Python解释器是Wasm,但是它仍然通常解释Python源代码文件,它不会将它们转换成特殊的Wasm模块或其他什么。这意味着Python解释器的所有开销都在那里,在Wasm引擎的开销之上,等等。

因此,由于同样的原因,C和Rust (它可以通过替换编译器后端来直接针对Wasm )仍然比针对编译到Wasm的CPython代码运行得更快。在本机运行时加快Python速度的工具(例如Cython、原始CPython C扩展等)也可以在Wasm中获得同样的速度,但它不是免费的“将缓慢的解释语言编译成Wasm,并成为快速编译的语言”;计算机还没有那么聪明。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59206185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档