2012-08-27 10 views
16

मैंने स्कैला में अपना पहला मध्यम आकार का प्रोजेक्ट लिखा है, और अब मैं थोड़ा चिंतित हूं कि ग्रहण के अंदर धीमी वृद्धिशील संकलन समय में मेरी कक्षाओं को अपेक्षाकृत कम, बड़ी .scala फ़ाइलों में रखने की प्रवृत्ति के साथ कुछ करना पड़ सकता है।क्या स्कैला में वृद्धिशील संकलन गति प्रति फ़ाइल कक्षाओं की संख्या पर निर्भर करती है?

इसके पीछे मेरा तर्क निम्नानुसार है: यदि मैं एक बड़ी .scala फ़ाइल के अंदर एक छोटी कक्षा को संशोधित करता हूं और सहेजता हूं, तो संकलक केवल यह देख सकता है कि पूरी फ़ाइल किसी भी तरह से संशोधित की गई थी, और इसलिए उसे जो कुछ भी है, उसे फिर से सम्मिलित करने के लिए मजबूर किया गया है केवल संशोधित वर्ग और इसके आश्रित वर्गों के बजाय, निर्भर वर्गों के साथ फ़ाइल करें।

तो यहां सवाल है: क्या आप किसी भी फ़ाइल में स्केल कक्षाओं की औसत संख्या को किसी भी तरह से पुन: संकलन गति को प्रभावित करते हैं? या इसे इस तरह से रखने के लिए: पुनर्मूल्यांकन की गति के मामले में, छोटे .scala फ़ाइलों को बड़े लोगों पर प्राथमिकता दी जा सकती है, या वास्तव में कोई अंतर नहीं है?

उत्तर

14

आप सही हैं: निर्भरता ट्रैकिंग की इकाई एक फ़ाइल है। यदि आप एक वर्ग में परिवर्तन करते हैं, लेकिन आपकी संकलन इकाई में कई वर्ग हैं, तो यह उसी फाइल में अन्य कक्षाओं पर निर्भर सभी फ़ाइलों का पुनर्मूल्यांकन ट्रिगर करेगा।

संपादित करें:

के बाद से 0.13.6 एसबीटी डिफ़ॉल्ट रूप से एक नया नाम-हैशिंग योजना का उपयोग करता है। यह केवल उन फ़ाइलों को पुन: संकलित करने की अनुमति देता है जिनमें कम से कम कुछ निर्भरता संशोधित नाम पर निर्भर होती है।

एसबीटी कमांड लाइन पर काम करता है, और एक्लिप्स एसबीटी में वृद्धिशील कंपाइलर का उपयोग करता है।

+0

इसे कहीं बड़े बैनर पर रखा जाना चाहिए! –

+0

मुझे आशा है कि यह जल्द ही बाद में तय किया जाएगा। लेकिन मैं सहमत हूं, इसे निर्दिष्ट किया जाना चाहिए। –