2012-03-15 7 views
12

私は、Javaで書かれたプログラムとC++で書かれたネイティブランチャーを、http://www.codeproject.com/Articles/17352/JVM-Launcherのサンプルに基づいて持っています。奇妙なことは、自分のネイティブランチャーでプログラムを実行するとjava.exe(〜5%対15-20%)を使用するよりもCPUがかかることです。私はこの状況にいくつかの考えを与えてきましたが、まだそれほど意味がありません。 JVMのヒープサイズを増やしてみました。リリースモードでネイティブランチャーをビルドしました。別のJREバージョン(1.6_24、1.6_31、1.7_03)を使用しましたが運がありません。Javaネイティブランチャーのパフォーマンス

これを修正する方法の提案はありますか?

+0

ソース(C++とJavaの両方)を私たちに提供できますか?あなたのプログラムが何をしているか分からなければ、何かを言うのは本当に難しいです。 – JesperE

+2

問題がどこにあるのか分かりました。デバッグモードでjvmを起動させるのは '-Djava.compiler = NONE'です。 – secmask

+3

あなたは答えを見つけたので、質問を閉じる気に? –

答えて

0

注:OPのコメントを回答に移動するためにこの回答を提供する。

問題は、C++プログラムが-Djava.compiler=NONE設定のネイティブランチャーを実行していたため、基本的にJVMが「解釈」モードで実行され、JIT(ジャストインタイム)コンパイルがネイティブコードこれは、実行されるたびにバイトコードが解釈される必要があるので、必然的に遅くなります。