2013-05-14 7 views
6

मैं पहले रिट्ज-एनआरपीएल का उपयोग नहीं कर रहा था, और nrepl ने लगभग 10 सेकंड लिया जो लंबे समय तक है लेकिन अभी भी सहनशील है क्योंकि मैं इसे अक्सर पुनरारंभ नहीं करता हूं।क्या nrepl (ritz-repl) स्टार्टअप समय को कम करने के लिए वैसे भी है?

जब मैंने रिट्ज-प्रतिलिपि की कोशिश की, तो बूट करने में लगभग 30 मिनट लग गए, और लगभग 1.3 जी मेमोरी खपत हुई। इससे मुझे इसका उपयोग करने में अनिच्छुक बना दिया जाता है।

मैंने एसएसडी में भी फेंक दिया कि यह गति बढ़ा सकता है, क्योंकि मैंने सुना है कि किसी ने उल्लेख किया है कि वह "उबंटू + एसएसडी का उपयोग करके शायद ही कभी लीन प्रतिलिपि स्टार्टअप समय को नोटिस करता है"। लेकिन मैं खुद को एसएसडी और एचडीडी के बीच अंतर नहीं बता सकता। मुझे नहीं पता कि मैंने कुछ गलत किया है या अगर यह सिर्फ एक मिथक है।

+1

जब मुझे भारी परिवर्तनीय आत्मनिरीक्षण की आवश्यकता होती है तो मैं केवल इसे आग लगा देता हूं। शेष समय मैं सामान्य nrepl का उपयोग करता हूं। मेरा उपयोग अनुभव यह है कि रिट्ज-एनआरपीएल परिपक्व से बहुत दूर है। मैं फेडोरा + एसएसडी का उपयोग कर रहा हूं और यह वैसे ही है, 30 सेकंड मेरे लिए बिल्कुल सामान्य है। इसके अलावा, चूंकि मुझे वैश्विक रूप से स्वत: पूर्णता (एसी-एनआरपीएल) को निष्क्रिय करना है (क्योंकि अन्यथा emacs जम जाता है) यह विकास वर्कफ़्लो के अधिकांश समय के लिए वास्तव में आकर्षक नहीं है। –

+0

जानकारी के लिए धन्यवाद! बीटीडब्लू, आपका कच्चा नॅपल स्टार्टअप समय कैसा है? मुझे 6 निर्भरताएं नहीं मिलीं और लगभग 15 के साथ 7 या उससे अधिक के साथ। – LoveProgramming

+0

हां मैंने इसे माप नहीं लिया लेकिन यह इसके बारे में है। अधिकतर विकास के लिए मैं आमतौर पर प्रतिलिपि में आत्मनिरीक्षण प्राप्त करने के लिए इस मैक्रो का उपयोग करके प्राप्त करता हूं: (defmacro dbg [x] '(चलो [x # ~ x] (println" dbg: "'x x = =" x #) x #)) –

उत्तर

1

एक nrepl सर्वर के स्टार्टअप समय को कम करने के तरीके हो सकते हैं जिसमें रिट्ज शामिल है लेकिन अधिकांश भाग के लिए आप कम से कम 10 सेकंड के साथ फंस जाएंगे जो आपके मशीन पर जेवीएम बूट करने के लिए होता है। मेरे लिए इंटरैक्टिव विकास करते समय एक अस्वीकार्य देरी की तरह है।

एक विकल्प के रूप में आप the clojure.tools.namespace library का उपयोग कर एक बेहतर कोड रीलोडिंग दृष्टिकोण का उपयोग कर सकते हैं। यह मूल रूप से स्मृति में एक निर्भरता ग्राफ रखता है और केवल उन नामस्थानों को पुनः लोड करता है जिन्हें आपने अंतिम बार ताज़ा करने के बाद बदल दिया है।

यह कुछ क्लोजर कोड के लिए बॉक्स से बाहर काम करेगा लेकिन सभी क्लोजर कोड नहीं। उन किनारे के मामलों से बचने के लिए the 'Preparing Your Application' section of the readme देखें।

आशा है कि इससे मदद मिलती है!

संबंधित मुद्दे