2016-06-29 25 views
9

Ứng dụng của tôi tạo mã java trong khi chạy và biên dịch nó bằng cách sử dụng API JavaCompiler. Một số tệp được tạo có thể khá lớn - lên tới vài trăm nghìn dòng. Tôi thấy rằng khi tôi chạy lệnh javac trên mã được tạo trong dòng lệnh, hoặc cách khác nếu tôi sử dụng một ứng dụng chỉ biên dịch thông qua API JavaCompiler, tôi có thể biên dịch nhiều tệp này (~ 500), ngay cả khi chúng rất lớn, dưới hai phút. Tuy nhiên, nếu tôi gọi API thông qua ứng dụng của tôi khi nó đang chạy trên một máy chủ Tomcat, thời gian biên dịch chạy lên tới mười hai phút (!!!).JavaCompiler API - biên dịch chậm khi chạy trong tomcat

Tôi sẽ đánh giá cao bất kỳ đề xuất nào về cách cải thiện hiệu suất của quá trình biên dịch.

Cảm ơn!

+0

tôi không thể đặt ngón tay của tôi vào chính xác lý do tại sao, nhưng khi tôi chuyển từ sử dụng trình biên dịch hệ thống mặc định thông qua một gọi tới 'ToolProvider.getSystemJavaCompiler();' nhưng thay vì sử dụng trình biên dịch JDT của Eclipse, mọi thứ tăng lên đáng kể. Một lời giải thích sẽ vui vẻ được chấp nhận làm câu trả lời. – Jewels

+0

một dự đoán sẽ là nhật thực có một trình biên dịch gia tăng để nó không phải là làm một xây dựng sạch mọi thời gian. Điều này có thể là sai mặc dù. Ngoài ra không trả lời câu hỏi chính –

+0

khi xem xét jvm với jvisualvm có vẻ như javac chạy toàn bộ trình biên dịch trong một chuỗi duy nhất, trong khi EclipseCompiler bắt đầu nhiều chủ đề để biên dịch các tệp '.java'. – Jewels

Trả lời

1

Cố gắng thiết lập các ưu tiên thread với giá trị cao nhất (trên thread hoặc bơi thread):

setPriority(Thread.MAX_PRIORITY); 
Các vấn đề liên quan