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!
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
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: –
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