我創建了一個Java程序,它從本地系統讀取加密文件並執行一些處理。其實我有20個文件要讀取,所以我使用線程機制來加速程序執行。與命令提示符相比,Eclipse中的程序執行速度非常慢
當我在Eclipse中運行程序時,需要30多分鐘才能完成執行,而如果我製作可運行jar並使用命令提示符執行程序,則需要不到一分鐘的時間。
爲什麼在Eclipse中運行程序比在命令提示符下運行需要更多時間?
我創建了一個Java程序,它從本地系統讀取加密文件並執行一些處理。其實我有20個文件要讀取,所以我使用線程機制來加速程序執行。與命令提示符相比,Eclipse中的程序執行速度非常慢
當我在Eclipse中運行程序時,需要30多分鐘才能完成執行,而如果我製作可運行jar並使用命令提示符執行程序,則需要不到一分鐘的時間。
爲什麼在Eclipse中運行程序比在命令提示符下運行需要更多時間?
Eclipse的控制檯視圖相比,命令行經常stdout
是出了名的慢。每當程序中發生大量打印時,預計程序運行速度將比Eclipse慢得多。
但無論如何,除非您正在編寫一個旨在通過Unix管道與其他程序集成的程序,否則應儘量減少打印,因爲即使在命令行上它也會導致性能下降。
是的,評論System.out已經加快了執行過程。謝謝。 – Ran
確保您在Eclipse中使用Run操作,而不是Debug,因爲後者確實具有可測量的差異,尤其是在使用條件斷點時。
但是,我記得使用調試產生的差異較小。
我只使用Run動作而不使用調試機制。與命令提示符相比,我仍然看到了巨大的延遲。 – Ran
我剛剛爲您做了一個實驗,沒有看到如此顯着的差異。 我創建了一個計算sin()
100000000
次的類。 這個程序在eclipse下運行〜15秒,通過命令提示運行~14秒。
所以,這裏是你的系統緩慢,我可以在我的頭頂看到的原因:
有一些典型的錯誤:
也許你在調試模式下執行程序。
嘗試使用運行(綠色圓圈內播放符號),而不是調試(綠蟲)
也許你是一個不同的JVM執行程序
看看在Project Properties->Java compiler
,Window->Preferences->Java->Compiler
和Window->Preferences->Java->Installed JREs
Eclipse JDT的Java控制檯的輸出和輸入交互在性能上與標準控制檯不同。捕獲System.out
將jdk 6更改爲jdk 7對我來說非常合適。 窗口 - >首選項 - > Java->已安裝的JRE
您是否有機會向System.out打印很多內容?因爲這會立即解釋你的觀察。 –
@MarkoTopolnik:是的,我使用了System.out,根據程序邏輯,我打印出5-10k次。這是一個問題嗎? – Ran
是的。刪除打印輸出,你會看到立即加速。 Eclipse的控制檯視圖比命令行中的「stdout」慢得多。 –