命令行中的Java执行比IntelliJ中的慢

命令行中的Java执行比IntelliJ中的慢,java,command-line,intellij-idea,Java,Command Line,Intellij Idea,我编写了一个简单的阶乘程序,具有任意精度: public class Fac { public static void main(String[] args) { int stop = 100000; long start = System.currentTimeMillis(); BigInteger integer = new BigInteger("1"); for(int i = 2; i <= stop;

我编写了一个简单的阶乘程序,具有任意精度:

public class Fac {
    public static void main(String[] args) {
        int stop = 100000;

        long start = System.currentTimeMillis();
        BigInteger integer = new BigInteger("1");
        for(int i = 2; i <= stop; i++){
            integer = integer.multiply(new BigInteger(i +""));
        }

        System.out.println("It took: " + (System.currentTimeMillis() - start) + "ms");
        //System.out.println(integer);
    }
}
当我在命令行中运行它时:

It took: 17919ms
命令行由以下人员运行:

javac Fac.java
java Fac
我知道这不是衡量时间的最佳方式,但差距太大,无关紧要。 为什么表演会有那么大的不同

其他人也注意到了类似的差异,但据我所知,他们的结论似乎与我的情况无关


这是因为启动jvm是为了用不同的类路径、参数等运行程序

如果在IntelliJ中运行程序,您将看到
run
窗口的第一行,类似于“C:\program…”

单击它展开它,您将看到intellij运行程序时使用的所有参数(我在这里将一个示例拆分为几行)

如果您复制了完全相同的参数(使用完全相同的jvm),那么在手动运行应用程序时可能会看到类似的性能


如果没有完全指定,
PATH
JAVA\u HOME
CLASSPATH
的系统设置默认用于启动程序。

IntelliJ和cmd行是否都在同一JRE上运行?IntelliJ是否有自己的编译器,如Eclipse?@TheLostMind。IntelliJ使用1.8.0_11 SDK,据我所知,它附带了一个jre。命令行使用1.8.0_25 jre,但编译器仍然是1.8.0_11。@Bjerrum-Oh。我不使用IntelliJ。无论如何,我想维金斯泰夫已经回答了你的问题:)谢谢。如果可以的话,我会投票的。我在哪里可以深入了解这个魔法?在这里找到一个链接:
javac Fac.java
java Fac
"C:\Program Files (x86)\Java\jdk1.8.0_40\bin\java"
-Didea.launcher.port=7532
 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.0.3\bin"
-Dfile.encoding=UTF-8
-classpath "C:\Program Files (x86)\Java\jdk1.8.0_40\jre\lib\charsets.jar;...etc..."
Fac