मेरे पास एक जावा प्रोग्राम है जो डेटाबेस से बहुत सारे इनपुट डेटा को पढ़ता है, इसे कुशलतापूर्वक पढ़ता है, फिर डेटा को अन्य डेटाबेस (ओडीबीसी ड्राइवरों का उपयोग करके, एक्सेल और एक्सेस डेटाबेस, एक नई विंडोज 7 मशीन पर) लिखता है। कार्यक्रम ग्रहण से चलाने के लिए लगभग 17 मिनट लगते हैं, लेकिन जब मैंने निष्पादन योग्य .jar फ़ाइल बनाई तो इसे चलाने के लिए अतिरिक्त 10 मिनट लगते हैं (27 कुल)।मेरी .jar फ़ाइल ग्रहण में प्रोग्राम की तुलना में धीमी गति से क्यों चल रही है?
धीमी जार फ़ाइलों (एसओ और गूगल खोजकर) के लिए अब तक के दो कारणों से यह पता चला है कि वे संपीड़ित हैं और कमांड प्रॉम्प्ट (या त्रुटि लॉग) को लिखने में बहुत अधिक समय लगता है ग्रहण में कंसोल। मैंने एक असम्पीडित जार फ़ाइल बनाने की कोशिश की और यह केवल 10 सेकंड तक फैल गया (जो पूरी तरह से यादृच्छिक हो सकता था, क्योंकि रन टाइम वैसे भी 30 सेकंड तक भिन्न होते हैं)। मेरे पास प्रोग्राम में केवल 10 System.out.println()
कमांड हैं, इसलिए इसे बहुत धीमा नहीं करना चाहिए।
किसी भी विचार के कारण यह इतना धीमा चल रहा है, और यदि कोई तरीका है तो मैं इसे फिर से तेज कर सकता हूं? मुझे बताएं कि क्या कोई अन्य विवरण है जो प्रासंगिक हो सकता है जिसमें मुझे शामिल करना चाहिए। धन्यवाद!
क्या आपने पूरी तरह से System.out.println() कमांड को हटाने का प्रयास किया है? कंसोल के लिए प्रिंटिंग बहुत गति खाती है। –
मैं लॉग संदेशों को मुद्रित करने के लिए लॉगर या log4j लाइब्रेरी का उपयोग करने का सुझाव देता हूं और आप यह देखने के लिए टाइम-स्टैंप का उपयोग कर सकते हैं कि आपके कोड का कौन सा हिस्सा बाधा उत्पन्न कर रहा है। यह एक ठोस समाधान नहीं है लेकिन इसे समस्या को कम करने में मदद करनी चाहिए। – user845279
@ लाइ Xin चू के साथ सहमत हैं। लेकिन अगर सभी प्रिंटों को हटाना मुश्किल है तो बस अपना प्रोग्राम चलाएं और एसटीडीओयूटी को फाइल करने के लिए रीडायरेक्ट करें। मुझे विश्वास नहीं है कि ग्रहण कंसोल खोल से धीमा काम कर सकता है। – AlexR