2016-06-29 10 views
9

में चलते समय धीमा संकलन मेरा एप्लिकेशन रनटाइम के दौरान जावा कोड उत्पन्न करता है और जावाकंपेलर एपीआई का उपयोग करके इसे संकलित करता है। कुछ जेनरेट की गई फाइलें कुछ बड़ी हज़ार लाइनों तक बड़ी हो सकती हैं। मुझे लगता है कि जब मैं कमांड लाइन में जेनरेट कोड पर javac कमांड चलाता हूं, या वैकल्पिक रूप से यदि मैं एक एप्लिकेशन का उपयोग करता हूं जो जावाकंपलर एपीआई के माध्यम से संकलन करता है, तो मैं इन फ़ाइलों में से कई संकलित कर सकता हूं (~ 500), भले ही वे दो मिनट से कम में बहुत बड़े हैं। हालांकि, अगर मैं अपने एप्लिकेशन के माध्यम से एपीआई को टॉमकैट सर्वर पर चला रहा हूं, तो संकलन समय बारह मिनट (!!!) के ऊपर चला जाता है।जावाकंपेलर एपीआई - टॉमकैट

मैं संकलन के प्रदर्शन में सुधार करने के तरीके के बारे में किसी भी सुझाव की सराहना करता हूं।

धन्यवाद!

+0

मैं वास्तव में क्यों पर मेरी उंगली नहीं लगा सकेंगे, लेकिन जब मैं एक के माध्यम से डिफ़ॉल्ट सिस्टम संकलक में स्विच 'ToolProvider.getSystemJavaCompiler(); पर कॉल करें, लेकिन इसके बजाय ग्रहण के जेडीटी कंपाइलर का उपयोग किया गया, चीजें काफी हद तक बढ़ीं। एक स्पष्टीकरण खुशी के रूप में खुशी के रूप में स्वीकार किया जाएगा। – Jewels

+0

अनुमान लगाया जाएगा ग्रहण में वृद्धिशील कंपाइलर होगा, इसलिए यह हर बार एक स्वच्छ निर्माण नहीं कर रहा है। हालांकि यह गलत हो सकता है। Jvisualvm के साथ jvm को देखने से मुख्य प्रश्न –

+0

का उत्तर भी नहीं देता है, ऐसा लगता है कि जावैक एक ही थ्रेड में पूरे संकलन को चलाता है, जबकि EclipseCompiler '.java' फ़ाइलों को संकलित करने के लिए कई सारे धागे शुरू करता है। – Jewels

उत्तर

1

(धागा या थ्रेड पूल पर) उच्चतम मूल्य के लिए धागा प्राथमिकता सेट करने का प्रयास:

setPriority(Thread.MAX_PRIORITY);