shell - 为什么我的Java程序通过 Eclipse 运行的速度比 shell 快 4倍?

  显示原文与译文双语对照的内容

通过 Eclipse ( 。版本 3.5.2,在 10.04上,java版本"1,0_20"OpenJDK运行时环境( IcedTea6 1.9.9 ) ( 6b20-1.9.9-0ubuntu1~10.04 ) OpenJDK服务器虚拟机( 。构建 19.0 -b09,混合模式) 执行下面的简单代码示例时,需要2 秒。 当我从 shell ( 。使用相同的优先级和java版本) 执行它时,需要大约 40秒。


for (int i = 0; i<1000*1000; i++) {


 System.out.println(Math.cos(i));


}



我还尝试了其他程序,在运行时和输出量中有所不同: 在 shell 中每一个都慢得多。 这与执行顺序无关。 output秒的最小百分比差异为1 秒,在 Eclipse vs 145秒内,程序的输出只有很小的输出。

原因 何在?

时间: 原作者:

因为你正在计时你的终端。 某些终端在显示/滚动文本时有些慢。 而且你的终端是缓冲的,vs Eclipse 控制台可以能会有更多缓冲,导致你的程序在每行打印后。

尝试将程序的输出重定向到文件或者/dev/null,,并将它的时间。

在我的系统中,这与你的小循环有点不同:






$ time java T


 --snip - 1M lines of output--



real 0m24.746s


user 0m2.403s


sys 0m1.597s



$ time java T> output



real 0m5.172s


user 0m2.800s


sys 0m2.707s




原作者:
...