4

我创建了一个 Java 程序,它从本地系统读取加密文件并进行一些处理。实际上我有 20 个文件要读取,所以我使用线程机制来加速程序执行。

当我在 Eclipse 中运行程序时,完成执行需要 30 多分钟,而如果我制作一个可运行的 jar 并使用命令提示符执行程序,则只需不到一分钟。

为什么在 Eclipse 中运行程序比在命令提示符下运行程序花费更多时间?

4

5 回答 5

8

与常规的命令行System.out相比,Eclipse 的控制台视图捕获速度非常慢。stdout每当程序中发生大量打印时,可以预期程序在 Eclipse 中的运行速度会明显变慢。

但是无论如何,除非您正在编写一个旨在通过 Unix 管道与其他程序集成的程序,否则您应该尽量减少打印,因为即使在命令行下也会降低性能。

于 2012-10-09T14:44:07.533 回答
1

有一些典型的错误:

  • 也许您正在调试模式下执行程序。

    尝试使用 Run(在绿色圆圈内播放符号)而不是 Debug(绿色错误)

  • 也许您正在使用不同的 JVM 执行程序

    看一看Project Properties->Java compilerWindow->Preferences->Java->CompilerWindow->Preferences->Java->Installed JREs

  • Eclipse JDT 与 Java 控制台的输出和输入交互在性能上与标准控制台不同。

于 2012-10-09T14:41:10.077 回答
0

我刚刚为您做了一个实验,并没有看到如此显着的差异。我创建了计算sin() 100000000时间的类。该程序在 Eclipse 下运行约 15 秒,通过命令提示符运行约 14 秒。

因此,我可以在脑海中看到以下是系统运行缓慢的原因:

  1. 确保您没有在调试下运行。使用运行选项,而不是调试。
  2. 确保您在 Eclipse 下没有一些覆盖/监控开发人员工具。例如 YourKit、Emma 等。
  3. 确保您的程序不会对控制台产生大量打印。
  4. 在eclipse下运行时检查是否有足够的堆内存
于 2012-10-09T14:40:55.367 回答
0

将 jdk 6 更改为 jdk 7 对我来说非常有效。Window->Preferences->Java->Installed JREs

于 2015-03-24T18:46:34.170 回答
0

确保您在 Eclipse 中使用 Run 操作,而不是 Debug,因为后者确实具有可衡量的差异,尤其是在您使用条件断点的情况下。

但是,我记得使用 Debug 产生的显着差异较小。

于 2012-10-09T14:34:02.310 回答