2012-03-15 22 views
12

我有一個用Java編寫的程序和一個用C++編寫的本機啓動器,基於http://www.codeproject.com/Articles/17352/JVM-Launcher的示例。奇怪的是,使用我的本地啓動程序運行我的程序需要比使用java.exe(〜5%vs 15-20%)更多的CPU。我一直在考慮這種情況,但它仍然沒有多大意義。我試過增加JVM堆大小,(重新)在發佈模式下構建本地啓動器,使用不同的JRE版本(1.6_24,1.6_31,1.7_03),但沒有運氣。Java本機啓動器性能

有沒有人有建議如何解決這個問題?

+0

你能否給我們提供源代碼(包括C++和Java)?不知道你的程序做什麼,要說什麼真的很難。 – JesperE 2012-03-19 20:22:17

+2

我發現問題在哪裏,它是使用'-Djava.compiler = NONE',這會導致jvm以調試模式啓動。 – secmask 2012-03-20 00:56:33

+3

關心這個問題,因爲你找到了答案? – 2012-04-19 16:33:29

回答

0

注意:提供此答案以將OP的評論移至回答。

問題是C++程序運行的是本機啓動程序和-Djava.compiler=NONE設置,它基本上將JVM設置爲以「解釋」模式運行,禁止將JIT(即時)編譯爲本機代碼,因爲每次執行字節碼都需要解釋,這自然會使運行速度變慢。