相关疑难解决方法(0)

"java -server"和"java -client"之间的真正区别?

"java -server"和"java -client"之间有什么实际的区别吗?我在Sun的网站上找到的只是一个模糊的" - 服务器启动较慢但应该运行得更快".有什么真正的区别?(目前使用JDK 1.6.0_07.)

java jvm jvm-hotspot

380
推荐指数
8
解决办法
23万
查看次数

Unix排序命令需要更长的时间,具体取决于它的执行位置?!(从IDE运行程序中的ProcessBuilder最快,终端最慢)

我有一个java程序,它使用ProcessBuilder来调用unix sort命令.当我在我的IDE(intelliJ)中运行此代码时,只需要大约一秒钟来排序500,000行.当我将它打包到一个可执行的jar中,并从终端运行它需要大约10秒.当我自己从终端运行sort命令时,需要20秒!

为什么性能上的巨大差异以及我可以以相同的性能执行jar的任何方式?环境是OSX 10.6.8和java 1.6.0_26.排序手册页的底部显示"2004年11月5.93排序"

它正在执行的命令是:

sort -t'    ' -k5,5f -k4,4f -k1,1n /path/to/imput/file -o /path/to/output/file
Run Code Online (Sandbox Code Playgroud)

请注意,当我从终端运行sort时,我需要手动转义制表符分隔符并使用参数-t$'\t'而不是实际的选项卡(我可以传递给ProcessBuilder).

看起来ps一切看起来都一样,除非从IDE运行时,sort命令的TTY值为?而不是ttys000 - 但从这个问题我不认为这应该有所作为.也许BASH让我放慢脚步?我的想法已经不多了,想要缩短20倍的性能差距!

java unix sorting macos performance

7
推荐指数
1
解决办法
1622
查看次数

从命令行执行 Java 比 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在 IntelliJ 中运行它时:

It took: 5392ms
Run Code Online (Sandbox Code Playgroud)

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

It took: 17919ms
Run Code Online (Sandbox Code Playgroud)

命令行由以下人员运行:

javac Fac.java
java Fac
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

java command-line intellij-idea

3
推荐指数
1
解决办法
1761
查看次数