我创建了一个 Java 程序,它从本地系统读取加密文件并进行一些处理。实际上我有 20 个文件要读取,所以我使用线程机制来加速程序执行。
当我在 Eclipse 中运行程序时,完成执行需要 30 多分钟,而如果我制作一个可运行的 jar 并使用命令提示符执行程序,则只需不到一分钟。
为什么在 Eclipse 中运行程序比在命令提示符下运行程序花费更多时间?
与常规的命令行System.out
相比,Eclipse 的控制台视图捕获速度非常慢。stdout
每当程序中发生大量打印时,可以预期程序在 Eclipse 中的运行速度会明显变慢。
但是无论如何,除非您正在编写一个旨在通过 Unix 管道与其他程序集成的程序,否则您应该尽量减少打印,因为即使在命令行下也会降低性能。
有一些典型的错误:
也许您正在调试模式下执行程序。
尝试使用 Run(在绿色圆圈内播放符号)而不是 Debug(绿色错误)
也许您正在使用不同的 JVM 执行程序
看一看Project Properties->Java compiler
,Window->Preferences->Java->Compiler
和Window->Preferences->Java->Installed JREs
Eclipse JDT 与 Java 控制台的输出和输入交互在性能上与标准控制台不同。
我刚刚为您做了一个实验,并没有看到如此显着的差异。我创建了计算sin()
100000000
时间的类。该程序在 Eclipse 下运行约 15 秒,通过命令提示符运行约 14 秒。
因此,我可以在脑海中看到以下是系统运行缓慢的原因:
将 jdk 6 更改为 jdk 7 对我来说非常有效。Window->Preferences->Java->Installed JREs
确保您在 Eclipse 中使用 Run 操作,而不是 Debug,因为后者确实具有可衡量的差异,尤其是在您使用条件断点的情况下。
但是,我记得使用 Debug 产生的显着差异较小。