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
我知道这不是衡量时间的最佳方式,但差距太大了,没关系。
为什么表现如此不同?
其他人也注意到了类似的差异,但是,据我所知,他们的结论似乎与我的情况无关。
Why is my application running faster in IntelliJ compared to command-line?
这是因为你启动 jvm 到 运行 你的程序有不同的类路径、参数等。
如果您 运行 IntelliJ 中的程序,您将看到 Run
window 的第一行类似于 "C:\Program ..."
点击它展开它,你会看到当 intellij 运行s 你的程序时使用的所有参数(我在这里将一个例子分成几行)。
"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),那么当您手动 运行 您的应用程序时,您可能会看到类似的性能。
如果您没有完全指定,PATH
、JAVA_HOME
和 CLASSPATH
的系统设置将默认用于启动您的程序。
我写了一个简单的阶乘程序,精度任意:
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
我知道这不是衡量时间的最佳方式,但差距太大了,没关系。 为什么表现如此不同?
其他人也注意到了类似的差异,但是,据我所知,他们的结论似乎与我的情况无关。
Why is my application running faster in IntelliJ compared to command-line?
这是因为你启动 jvm 到 运行 你的程序有不同的类路径、参数等。
如果您 运行 IntelliJ 中的程序,您将看到 Run
window 的第一行类似于 "C:\Program ..."
点击它展开它,你会看到当 intellij 运行s 你的程序时使用的所有参数(我在这里将一个例子分成几行)。
"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),那么当您手动 运行 您的应用程序时,您可能会看到类似的性能。
如果您没有完全指定,PATH
、JAVA_HOME
和 CLASSPATH
的系统设置将默认用于启动您的程序。