2016-06-29 5 views
9

내 응용 프로그램은 런타임 중에 Java 코드를 생성하고 JavaCompiler API를 사용하여 컴파일합니다. 생성 된 파일 중 일부는 수십만 줄에 이르는 대규모 파일 일 수 있습니다. 나는 명령 줄에서 생성 된 코드에서 javac 명령을 실행할 때 또는 JavaCompiler API를 통해 컴파일 만하는 응용 프로그램을 사용하는 경우에도 (~ 500) 이러한 파일을 많이 컴파일 할 수 있음을 알았습니다. 2 분 안에 매우 큽니다. 그러나 Tomcat 서버에서 실행 중일 때 응용 프로그램을 통해 API를 호출하면 컴파일 시간이 12 분 이상 (!!!) 실행됩니다.JavaCompiler API - Tomcat에서 실행될 때 느린 컴파일

컴파일 성능을 향상시키는 방법에 대한 제안 사항을 알려 주시면 감사하겠습니다.

감사합니다. (스레드 또는 스레드 풀에서) 가장 높은 값으로 스레드 우선 순위를 설정하는

+0

'ToolProvider.getSystemJavaCompiler();'를 호출하지만 대신 Eclipse의 JDT 컴파일러를 사용하여 일이 크게 빨라졌습니다. 설명을 행복하게 받아 들일 것입니다. – Jewels

+0

추측은 일식이 될 것이므로 증분 컴파일러가 있으므로 매번 깨끗한 빌드를 수행하지는 않습니다. 그러나 이것은 잘못 될 수 있습니다. 또한 주 질문에 대답하지 않습니다 –

+0

jvm과 jvmvm을 살펴보면 javac가 하나의 스레드에서 전체 컴파일을 실행하는 것처럼 보이지만 EclipseCompiler는'.java' 파일을 컴파일하기 위해 많은 스레드를 시작합니다. – Jewels

답변

1

시도 : 나는 통해 기본 시스템 컴파일러를 사용하여로 전환 할 때 나는 이유를 정확하게 내 손가락을 배치 할 수는 없지만

setPriority(Thread.MAX_PRIORITY);