2010-02-02 4 views
9

काम पर हमारा ऐप 3000 से अधिक इकाइयों के साथ एक विशाल परियोजना है, जो कोड की लगभग 3.5 मिलियन लाइनों का वजन करता है।डी 2007 से डी -2010 तक लाइन गिनती क्यों बदलती है?

... या कम से कम यह तब था जब हम इसे D2007 के तहत संकलित कर रहे थे। हमने हाल ही में डी 2010 में अपडेट किया है, और अब यदि हम एक पूर्ण निर्माण चलाते हैं, तो लाइन गिनती अंततः 4.9 मिलियन पर बंद हो जाती है। समान डीपीआर, एक ही कोड बेस, वही सबकुछ, लेकिन कंपाइलर किसी भी तरह से निर्माण चक्र में लगभग 40% अधिक कोड कोड चला रहा है और यहां कोई भी नहीं जानता है क्यों।

बिल्डिंग के बाद, चीजों को और अधिक भ्रमित करने के लिए, हम आईडीई में परियोजना -> जानकारी पर जा सकते हैं और यह 3.8 एम लाइनों की रिपोर्ट करता है। डी 2007 में, कंपाइलर संवाद और परियोजना -> सूचना संवाद ने एक ही संख्या की सूचना दी।

किसी को भी पता है कि यहां क्या हो रहा है?

+0

क्या आप सुनिश्चित हैं कि कंपाइलर पथ समान हैं? क्या यह संभव है कि कोड जो पहले संकलित नहीं किया जा रहा था संकलित किया जा रहा है? –

+0

@ निक, कोई संख्या समान संकलन से नहीं है। सफल संकलन के बाद ठीक दबाकर तुरंत एक और दूसरा तुरंत परियोजना -> सूचना विकल्प की जांच कर रहा है। 2007 के तहत संख्याएं मेल खाती हैं, अब 2010 के तहत वे नहीं करते हैं। कौन सा सटीक है? – skamradt

+0

@skamradt: मुझे लगता है कि निक ने डी 2007 और डी 2010 लाइन के बीच अंतर का जिक्र किया है। –

उत्तर

0

मुझे आश्चर्य है कि कंपाइलर प्रगति क्षेत्र में लाइन गिनती निर्धारित करने के लिए लाइनफीड्स/कैरिज रिटर्न का संचालन यूनिकोड आंतरिक के परिणामस्वरूप किसी भी तरह से परेशान हो रहा है।

क्या आपने डी 200 9 में संकलन करने की कोशिश की है और यह देखकर कि क्या यह वही अजीब व्यवहार दिखाता है?

0

ऐसा इसलिए हो सकता है क्योंकि यह इनलाइनिंग के साथ अधिक आक्रामक है?

1

डी 2010 समर्थन जेनेरिक नहीं है? मुझे लगता है कि कुछ libs जेनेरिक द्वारा प्रतिस्थापित किया गया है, जो अतिरिक्त लाइनों के लिए खाता हो सकता है जो पार्स किए जाने लगते हैं यदि यह "वर्चुअल" लाइनों का उपयोग कर रहा है।

+0

जेनिक्स वास्तव में पर्दे के पीछे कोड की अतिरिक्त लाइनें बनाता है। –

1

ऐसा लगता है कि यह एक बग है। प्रोजेक्ट के तहत सही लाइन नंबर अभी भी रिपोर्ट किया गया है सूचनाsimilar question पर निक का उत्तर देखें।