2016-06-29 18 views
9

Moja aplikacja generuje kod java podczas wykonywania i kompiluje go przy użyciu JavaCompiler API. Niektóre z wygenerowanych plików mogą być dość duże - nawet do kilkuset tysięcy linii. Po uruchomieniu polecenia javac wygenerowanego kodu w wierszu poleceń lub, jeśli używam aplikacji, która wykonuje tylko kompilację za pośrednictwem JavaCompiler API, mogę skompilować wiele z tych plików (~ 500), nawet jeśli są bardzo duże, w niecałe dwie minuty. Jeśli jednak zadzwonię do API za pośrednictwem mojej aplikacji, gdy działa ona na serwerze Tomcat, czas kompilacji będzie przekraczał dwanaście minut (!!!).JavaCompiler API - powolna kompilacja podczas działania w tomcat

Byłbym wdzięczny za wszelkie sugestie dotyczące poprawy wydajności kompilacji.

Dzięki!

+0

nie mogę umieścić mój palec na dokładnie dlaczego, ale kiedy przeszedłem do korzystania z kompilatora domyślnego systemu za pośrednictwem wywołanie 'ToolProvider.getSystemJavaCompiler();' ale zamiast tego użył kompilatora JDT Eclipse, rzeczy przyśpieszyły znacząco. Wyjaśnienie z przyjemnością zostanie przyjęte jako odpowiedź. – Jewels

+0

Zgadnij, że byłoby zaćmienie ma przyrostowy kompilator, więc nie robi czystej budowy za każdym razem. To może być jednak złe. Również nie odpowiada na główne pytanie: –

+0

od patrzenia na jvm z jvisualvm wygląda na to, że javac uruchamia całą kompilację w jednym wątku, podczas gdy EclipseCompiler uruchamia wiele wątków, aby skompilować pliki '.java'. – Jewels

Odpowiedz

1

Spróbuj ustawić priorytet wątku na najwyższą wartość (na puli wątków lub wątku):

setPriority(Thread.MAX_PRIORITY); 
Powiązane problemy