繁体   English   中英

从命令行执行Java比在IntelliJ中慢

[英]Java execution from commandline is slower than in IntelliJ

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

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);
    }
}

当我在IntelliJ中运行它时:

It took: 5392ms

当我在命令行中运行它时:

It took: 17919ms

命令行通过以下方式运行:

javac Fac.java
java Fac

我知道这不是衡量时间的最佳方法,但是差距太大了,没关系。 为什么表现如此不同?

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

与命令行相比,为什么我的应用程序在IntelliJ中运行得更快?

http://grails.1312388.n4.nabble.com/Why-does-IntelliJ-IDEA-runs-faster-than-Windows-command-line-td3894823.html

这是因为您正在启动jvm以使用不同的类路径,参数等运行程序。

如果您在IntelliJ中运行程序,您将在Run窗口的第一行看到类似“ C:\\ Program ...”的内容。

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

"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

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

如果未完全指定PATHJAVA_HOMECLASSPATH系统设置,则默认情况下将使用它们来启动程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM