Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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
Javascript 为什么JS中的atan2和asin比JVM中的要快得多?_Javascript_Scala_Performance_Jvm - Fatal编程技术网

Javascript 为什么JS中的atan2和asin比JVM中的要快得多?

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

我有两段几乎相同的代码。一个是在JVM上运行Scala,第二个是运行Javascript。两者都执行大量的
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)感到厌烦和肮脏,只能用上面的推测/有根据的猜测来回答,而这些猜测并不能给出正确的答案。此外,你还可以将数字数组上的迭代与元组数组(?)进行比较