Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 我如何才能对WebAssembly指令的相对成本建立直观的感觉?_Performance_Compiler Optimization_Webassembly - Fatal编程技术网

Performance 我如何才能对WebAssembly指令的相对成本建立直观的感觉?

Performance 我如何才能对WebAssembly指令的相对成本建立直观的感觉?,performance,compiler-optimization,webassembly,Performance,Compiler Optimization,Webassembly,我正在建造一个发射WebAssembly的系统。在我设计编译器将发出的Wasm时,通常有多种方法来实现给定的行为,我不确定哪种方法性能更好 例如,在某些情况下,我可以链接一些数学指令,以避免在变量中存储/检索值。什么时候值得做出这样的权衡?这是我应该考虑的事情吗 显然,这个问题的唯一真正答案是“同时构建这两个模型,然后在多个Wasm口译员上测量性能”,但就我的问题数量而言,这是不可行的。我猜有些指令比其他指令贵一个数量级,知道这将帮助我做出更好的直觉决策 对于如何思考这个问题,有什么经验法则吗?

我正在建造一个发射WebAssembly的系统。在我设计编译器将发出的Wasm时,通常有多种方法来实现给定的行为,我不确定哪种方法性能更好

例如,在某些情况下,我可以链接一些数学指令,以避免在变量中存储/检索值。什么时候值得做出这样的权衡?这是我应该考虑的事情吗

显然,这个问题的唯一真正答案是“同时构建这两个模型,然后在多个Wasm口译员上测量性能”,但就我的问题数量而言,这是不可行的。我猜有些指令比其他指令贵一个数量级,知道这将帮助我做出更好的直觉决策


对于如何思考这个问题,有什么经验法则吗?有人写过这个吗?有没有工具可以告诉我一个给定的浏览器/解释器会将一段Wasm编译成什么?

听起来你需要一些类似于JsPerf的东西,但是对于Wasm来说

性能将取决于您使用的浏览器和版本,我恐怕这里没有一个好的答案。如果你看一看js的性能,编译器确实会有所帮助,但供应商可以做一些有意义的事情

随着时间的推移,我们可以预期wasm和本机应用程序之间的差距将大大缩短,我怀疑wasm的主要瓶颈是js和wasm之间的桥梁


有一篇文章可能会引起您的兴趣:

您可以优化Wasm代码,以减少输出的大小。实际上,更小的输出文件可以下载得更快。如果Wasm代码存储在web服务器上并在客户端浏览器中执行,这一点很重要

除此之外,浏览器中的Wasm编译器也可以优化代码。但是,即使在这种情况下,在编译器中提前进行优化也并非毫无意义,因为浏览器给浏览器增加了更多的负担通常会导致它将代码编译为本机二进制文件的速度更慢。这会导致加载时间稍长或web应用程序的响应性稍差