मेरे पास एक जावा प्रोग्राम है जो यूनिक्स सॉर्ट कमांड को कॉल करने के लिए प्रोसेसबिल्डर का उपयोग करता है। जब मैं अपने आईडीई (इंटेलिजे) के भीतर यह कोड चलाता हूं तो 500,000 लाइनों को क्रमबद्ध करने में केवल एक सेकंड लगते हैं। जब मैं इसे निष्पादन योग्य जार में पैकेज करता हूं, और इसे टर्मिनल से चलाता है तो इसमें लगभग 10 सेकंड लगते हैं। जब मैं टर्मिनल से सॉर्ट कमांड चलाता हूं, तो इसमें 20 सेकंड लगते हैं!यूनिक्स सॉर्ट कमांड को कहां निष्पादित किया जाता है, इस पर निर्भर करता है ?! (आईडीई से चलने वाले प्रोग्राम में प्रोसेसबिल्डर से सबसे तेज़, टर्मिनल से धीमा)
प्रदर्शन में विशाल अंतर और किसी भी तरह से मैं एक ही प्रदर्शन के साथ निष्पादित करने के लिए जार प्राप्त कर सकता हूं? पर्यावरण ओएसएक्स 10.6.8 और जावा 1.6.0_26 है। तरह आदमी पृष्ठ के नीचे कहते हैं, "प्रकार 5.93 नवंबर 2004"
आदेश यह क्रियान्वित किया जाता है:
sort -t' ' -k5,5f -k4,4f -k1,1n /path/to/imput/file -o /path/to/output/file
ध्यान दें कि मैं मैन्युअल टैब सीमांकक से बचने के लिए की जरूरत है जब मैं टर्मिनल से तरह चलाने के लिए और वास्तविक टैब के बजाय -t$'\t'
तर्क का उपयोग करें (जिसे मैं प्रोसेसबिल्डर को पास कर सकता हूं)।
ps
के रूप में देख रहे हैं सब कुछ समान लगता है जब आईडीई से चलाने के दौरान सॉर्ट कमांड का टीटीवी होता है ?? ttys000 के बजाय - लेकिन this question से मुझे नहीं लगता कि इससे कोई फर्क पड़ता है। शायद बाश मुझे धीमा कर रहा है? मैं विचारों से बाहर हूं और इस 20x प्रदर्शन अंतर को बंद करना चाहता हूं! http://code.google.com/p/externalsortinginjava/
बाहरी तरह पूरी तरह से बुलाने की जरूरत से बचें:
वाह प्रयास करें .. मुझे लगता है कि मैंने देखा कि किसी और कल यह एक ही सवाल पूछते हैं। http://stackoverflow.com/questions/7111127/why-is-my-plplication-running-faster-in-intellij-compared-to-command-line – Kal
क्या आप जानते हैं कि आप एक ही तरह से चल रहे हैं? सुनिश्चित करने के लिए निष्पादन योग्य के लिए एक पूर्ण पथ का प्रयास करें। यदि आपके पास ब्रू/मैकपोर्ट/फ़िंक स्थापित है, तो यह संभव है कि धीमे होने पर उन पैकेजों का क्रम चल रहा हो। – ergosys
@ ज़ुगवाल्ट: प्रत्येक रिकॉर्ड कितना 'चौड़ा' है, या एक और तरीका है, आप जिस समग्र फ़ाइल को सॉर्ट कर रहे हैं वह कितनी बड़ी है। 1 सेकंड में एक सामान्य रिकॉर्ड का 500,000 यूनिक्स सिस्टम के लिए सही लगता है जिसका उपयोग मैं काम करने के लिए करता हूं। 20 सेकंड पागल लगता है। इस प्रकार अपनी temp फ़ाइलों को/tmp या/var/tmp dir में बनाएगा (जब तक कि आप इसे '-D' से ओवरराइड नहीं कर रहे हों)। हो सकता है कि आप प्रसंस्करण को देखकर वहां एक सुराग उठा सकें। अन्यथा, मैं डिस्क के साथ समस्याएं सोच रहा हूं, क्या आपका आईडीई मानक/tmp/या/var/tmp से भिन्न स्थान पर tmpfiles लिख रहा है? सौभाग्य। – shellter