javascript - JRE 与节点性能
问题描述
我有一个快速的问题。为什么这段代码中 Javascript 的速度几乎是 Java 代码的两倍?Java代码:
public class Main{
public static void main(String[] args){
long startTime = System.currentTimeMillis();
double sum = 0.0;
for(double i=1; i<=100000; i++){
for(double j=1; j<=10000; j++){
sum += i/j;
}
}
long endTime = System.currentTimeMillis();
System.out.println(sum + " [" + (endTime-startTime) + "ms]");
}
}
Javascript代码:
console.time("func");
console.log(func());
console.timeEnd("func");
function func(){
let sum = 0.0;
for(let i=1; i<=100000; i++){
for(let j=1; j<=10000; j++){
sum += i/j;
}
}
return sum;
}
据我了解,Java 在计算方面应该更快,所以这是 java 应该随时击败节点的地方。你能举一些例子来说明java在性能方面的优势在哪里。谢谢
解决方案
这不是一段特别现实的代码,但是,Java 似乎不是展开内部循环的循环。我试过了
for(double j=1; j<=10000; j+=2){
sum += i/j;
sum += i/(j + 1);
}
而且速度是原来的两倍。
我建议你尝试一个更现实的例子。