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