在Eclipse中执行程序比命令提示符慢得多。

4
我创建了一个Java程序,从本地系统读取加密文件并进行一些处理。实际上我有20个要读取的文件,所以我使用了线程机制来加速程序执行。
当我在Eclipse中运行程序时,执行完成需要超过30分钟,而如果我制作一个可运行的jar包并使用命令提示符执行程序,则只需要不到一分钟。
为什么在Eclipse中运行程序比在命令提示符中运行程序需要更长的时间?

3
你是否经常向 System.out 输出大量内容?因为那将立即解释你的观察结果。 - Marko Topolnik
1
@MarkoTopolnik:是的,我使用了System.out。根据程序逻辑,我会打印5-10k次。这是个问题吗? - Prathap
3
可以,去掉打印输出,你会立即感受到加速。Eclipse的“Console”视图比命令行中的stdout慢得多。 - Marko Topolnik
@dimo414 那类路径呢? - Marko Topolnik
可能相关问题的链接:https://dev59.com/tm455IYBdhLWcg3wAvNI - dasWesen
显示剩余2条评论
5个回答

9

与命令行的正常 stdout 相比,Eclipse 的控制台视图捕获 System.out 的速度非常慢。当程序中有大量打印输出时,预计程序将在 Eclipse 中运行得更慢。

但无论如何,除非您编写的程序旨在通过 Unix 管道与其他程序集成,否则应最小化打印输出,因为即使在命令行中,它也会影响性能。


是的,注释掉 System.out 语句确实加快了执行过程。谢谢。 - Prathap

1

以下是一些典型的错误:

  • 可能您正在以调试模式执行程序。

    尝试使用“运行”(绿色圆圈内的播放符号)而不是“调试”(绿色虫子)

  • 可能您正在使用不同的JVM执行程序

    查看项目属性->Java编译器窗口->首选项->Java->编译器窗口->首选项->Java->已安装的JRE

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


0
切换JDK 6到JDK 7对我来说完美地奏效了。 窗口->首选项->Java->已安装的JRE

0

请确保在Eclipse中使用“Run”操作,而不是“Debug”,因为后者会有明显的差异,特别是如果您使用条件断点。

然而,我记得使用“Debug”时出现的差异较小。


1
我只使用“运行”操作,而没有使用调试机制。但与命令提示符相比,仍然存在巨大的处理延迟。 - Prathap

0

我刚为您做了一个实验,没有看到如此显著的差异。

我创建了一个类来计算 sin() 100000000 次。

这个程序在 Eclipse 下运行了约 15 秒,在命令提示符下运行了约 14 秒。

所以,以下是我能想到的导致您系统运行缓慢的原因:

  1. 确保您没有在调试模式下运行。使用“运行”选项,而不是“调试”。
  2. 确保您在 Eclipse 下没有开启一些覆盖率/监控开发工具,例如 YourKit、Emma 等。
  3. 确保您的程序不会向控制台输出大量内容。
  4. 检查在 Eclipse 下运行时是否有足够的堆内存。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接