Javascript 为什么JS中的atan2和asin比JVM中的要快得多?
我有两段几乎相同的代码。一个是在JVM上运行Scala,第二个是运行Javascript。两者都执行大量的Javascript 为什么JS中的atan2和asin比JVM中的要快得多?,javascript,scala,performance,jvm,Javascript,Scala,Performance,Jvm,我有两段几乎相同的代码。一个是在JVM上运行Scala,第二个是运行Javascript。两者都执行大量的atan和asin调用(这是从执行四元数到欧拉角转换的实际应用程序中提取的)。Javascript实现的运行速度快了一个数量级 JS版本在我的机器上大约需要1000毫秒。Scala代码在JVM上运行时大约需要10000毫秒,但在使用Scala.js编译时,它再次运行大约1000毫秒(请参阅) 造成如此巨大性能差异的原因是什么?对于运行速度如此之快的JVM代码,我必须实现哪些更改 var s
atan
和asin
调用(这是从执行四元数到欧拉角转换的实际应用程序中提取的)。Javascript实现的运行速度快了一个数量级
JS版本在我的机器上大约需要1000毫秒。Scala代码在JVM上运行时大约需要10000毫秒,但在使用Scala.js编译时,它再次运行大约1000毫秒(请参阅)
造成如此巨大性能差异的原因是什么?对于运行速度如此之快的JVM代码,我必须实现哪些更改
var size=100000;
变量输入=新数组(大小);
四元数函数(a,b,c){
返回Math.asin(a)+Math.atan2(a,b)+Math.atan2(b,c);
}
函数转换(){
var总和=0;
对于(变量i=0;i 写入(“持续时间”+(结束-开始))代码>见我打赌@ShawnLaFrance的链接是答案的一大部分。还要注意,基准测试的内容,特别是JVM,是非常重要的,所以这也可能是一个因素。更多信息。另请参阅自2017年上述答案以来的最新数字优化。这个问题的问题是,除非您同时使用Node.js字节码(最初来自点火)和机器码(最终来自涡扇),否则,你也会对JVM的字节码和HotSpot的优化机器代码(假设你使用的是HotSpot)感到厌烦和肮脏,只能用上面的推测/有根据的猜测来回答,而这些猜测并不能给出正确的答案。此外,你还可以将数字数组上的迭代与元组数组(?)进行比较我打赌@ShawnLaFrance的链接是答案的一大部分。还要注意,基准测试的内容,特别是JVM,是非常重要的,所以这也可能是一个因素。更多信息。另请参阅自2017年上述答案以来的最新数字优化。这个问题的问题是,除非您同时使用Node.js字节码(最初来自点火)和机器码(最终来自涡扇),否则,你也会对JVM的字节码和HotSpot的优化机器代码(假设你使用的是HotSpot)感到厌烦和肮脏,只能用上面的推测/有根据的猜测来回答,而这些猜测并不能给出正确的答案。此外,你还可以将数字数组上的迭代与元组数组(?)进行比较