2017-05-11 17 views
0

介紹是不是將java用於多次調用的短進程?

我打算用Java編寫的算法(這樣我就可以學習這門語言),其運行時間應在幾秒鐘。這個小算法將從bash調用大約10000次。

問題

  • Java將每即使通過bash稱爲10,000次的循環過程中被調用時,它是正確的做優化?

  • 我的代碼可能會佔用約2000行,並運行約5秒鐘。您認爲執行優化的時間與運行時間相比可以忽略不計?

  • 有沒有一種方法來計算優化一次(就像它會在C++中工作)?

  • java是不是被用於多次調用的短進程?

+0

每次來自bash的調用都是一個新進程,或者您是否計劃將其妖魔化? – Raphael

+0

我不確定「妖魔化」是什麼意思。該進程將是多線程的(可能是10個線程)。分叉將發生在bash中,而不是在java中。不同的java進程不通信。我是否回答你的問題@Raphael? –

+2

據我所知,沒有任何VM語言在進程調用之間保持優化,所以如果你打算有一個長時間運行的後臺進程來接收調用來處理的東西,它將會起作用。 如果您的意思是每次調用它並創建一個JVM進程,性能將無法忍受。 – Raphael

回答

1

很難預測什麼優化將在運行期間發生,但如果進程重新每次調用開始,只運行了幾秒鐘,它會很難讓任何區別。編譯式優化不會受到影響,但運行時優化可能會發生。但是,JVM本身的啓動時間將壓倒任何好處。此外,如果程序本身很小且算法正確,那麼運行時優化程序可能幾乎沒有任何功能。

現階段的微觀優化並不富有成效。您是否有任何任何測量的過程的每個部分需要多長時間?如果不是,你會如何知道是否有任何幫助,甚至是哪裏有瓶頸?

在這種情況下,您最好的選擇是將JVM啓動時間消除爲一個因素。例如,將Java程序設置爲服務器,並通過服務調用從shell腳本調用它。程序最慢的部分消失了,JVM可以積累多次使用的統計信息。

相關問題