首页 > 解决方案 > 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在性能方面的优势在哪里。谢谢

标签: javascriptjavanode.jsperformance

解决方案


这不是一段特别现实的代码,但是,Java 似乎不是展开内部循环的循环。我试过了

        for(double j=1; j<=10000; j+=2){
            sum += i/j;
            sum += i/(j + 1);
        }

而且速度是原来的两倍。

我建议你尝试一个更现实的例子。


推荐阅读