2012-03-15 15 views
12

Mam program napisany w Javie i natywny program uruchamiający napisany w C++, oparty na próbce pod adresem http://www.codeproject.com/Articles/17352/JVM-Launcher. Dziwne jest to, że uruchamianie mojego programu z moim rodzimym programem uruchamiającym zajmuje więcej procesora niż użycie java.exe (~ 5% w stosunku do 15-20%). Podawałem tę sytuację trochę myśli, ale nadal nie ma to większego sensu. Próbowałem zwiększyć rozmiar sterty JVM, (re) zbudowałem rodzimy launcher w trybie wydania, użyłem innej wersji JRE (1.6_24, 1.6_31, 1.7_03), ale bez powodzenia.Wydajność natywnego programisty Java

Czy ktoś ma sugestię, jak rozwiązać ten problem?

+0

Czy możesz podać nam źródła (zarówno C++, jak i Java)? Nie wiedząc, co robi twój program, naprawdę trudno jest coś powiedzieć. – JesperE

+2

Znalazłem, gdzie jest problem, jest użycie '-Djava.compiler = NONE', które powodują uruchomienie jvm w trybie debugowania. – secmask

+3

zadbać o zamknięcie pytania, ponieważ znalazłeś odpowiedź? –

Odpowiedz

0

Uwaga: Podanie tej odpowiedzi umożliwia przeniesienie komentarza OP do odpowiedzi.

Problem polegał na tym, że w programie C++ był uruchomiony rodzimy launcher z ustawieniem -Djava.compiler=NONE, który zasadniczo ustawił JVM tak, aby działała w trybie "interpretacyjnym", wyłączając kompilację JIT (just-in-time) kodu bajtowego java na kod natywny , co naturalnie powoduje, że działa wolniej, ponieważ kod bajtowy musi być interpretowany za każdym razem, gdy jest wykonywany.