2009-04-18 3 views
13

ग्रहण सीडीटी सी/सी ++ कोड (प्राथमिकताएं> सी/सी ++> सूचकांक) के लिए दो सूचकांक प्रदान करता है। क्या किसी को पता है कि इन दोनों के बीच क्या अंतर है?ग्रहण में दो सी/सी ++ इंडेक्सर्स (तेज़ और पूर्ण) हैं: क्या अंतर है?

"CDT अतिरिक्त indexers के योगदान का समर्थन करता है, 2 indexers डिफ़ॉल्ट के साथ प्रदान की जा रही के साथ CDT रिहाई:

  • फास्ट

    मदद फ़ाइल नहीं वास्तव में शिक्षाप्रद है सी/सी ++ इंडेक्सर: सबसे तेज़ इंडेक्सिंग क्षमताओं को प्रदान करता है - घोषणाएं और क्रॉस संदर्भ जानकारी। यह अनुशंसित है इंडेक्सर।

  • पूर्ण C/C++ अनुक्रमणिका: - दोनों घोषणाओं और पार संदर्भ जानकारी

क्या इसे और अधिक होने की क्या मतलब है " प्रदर्शन की कीमत पर और भी अधिक सटीक अनुक्रमण क्षमता प्रदान करता है। सटीक: क्या यह अधिक चीजों को अनुक्रमणित करता है, और यदि ऐसा है तो?

+1

क्या यह अभी भी मामला है, एक्लिप्स केप्लर में, दो इंडेक्सर्स उपलब्ध हैं? मुझे दो नहीं दिख रहे हैं ... शायद एक को हटा दिया गया है? – einpoklum

उत्तर

13

यहां उनके पार्सिंग और अनुक्रमण (CDT/designs/Overview of Parsing) का वर्णन करने वाले सीडीटी पृष्ठ से एक अंश है। यह क्या मतभेद हैं और जहां तेजी से इंडेक्सर असफल हो सकता है की एक बहुत अच्छा विवरण देता है:

पार्सिंग और बाध्यकारी प्रस्ताव एक धीमी प्रक्रिया, यह एक समस्या है, क्योंकि उपयोगकर्ता जैसे कोड संपादन सुविधाओं की उम्मीद है सामग्री तेजी से सहायता करने में सहायता करती है। इस कारण से CDT भंडार एक पर डिस्क कैश क्रम में "अनुक्रमणिका" या "PDOM" (कायम दस्तावेज़ ऑब्जेक्ट मॉडल) कहा जाता है में बाध्यकारी जानकारी के लिए सुविधाओं कि उपयोगकर्ता अनुरोध करने के लिए जल्दी से प्रतिक्रिया प्रदान करने के लिए सक्षम होने के लिए।

सूचकांक का निर्माण एक परियोजना में सभी कोड को पार्स, सभी बंधनों को हल करने और सूचकांक करने के लिए उन बाइंडिंग लेखन शामिल है। सूचकांक है तो प्रत्येक बार उपयोगकर्ता द्वारा फ़ाइल को संपादित करने के लिए क्रमशः अद्यतन किया जाता है।CDT समर्थन की

पुराने संस्करण तीन अलग अनुक्रमण मोड, तेजी से अनुक्रमण, पूर्ण अनुक्रमण और कोई अनुक्रमण। की डिफ़ॉल्ट सेटिंग बड़ी परियोजना को अनुक्रमणित करने में प्रक्रिया का समय लग सकता है। तेजी से और पूर्ण indexers के बीच अंतर यह है कि तेजी इंडेक्सर हेडर फाइल कि पहले से ही एक बार पार्स किया गया है, को छोड़ देगा, जबकि पूर्ण इंडेक्सर हमेशा एक हेडर फाइल हर बार यह शामिल किया गया है फिर से पार्स जाएगा। हालांकि यह महत्वपूर्ण है कि पूर्ण सूचकांक, इसके नाम के बावजूद, अभी भी सटीक नहीं है।

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

पूर्ण सूचकांक हेडर को दोबारा पार्स करेगा, लेकिन यह उन्हें फिर से अनुक्रमित नहीं करेगा। इसलिए स्रोत फ़ाइलों जिनमें हेडर शामिल है अधिक सटीक रूप से पार्स किया जा सकता है, लेकिन हेडर स्वयं को केवल अनुक्रमित किया जाएगा। पूर्ण सूचकांक तेज सूचकांक से धीमा है क्योंकि अतिरिक्त पार्सिंग करता है, लेकिन यह केवल मामूली रूप से अधिक सटीक है। के लिए इस कारण पूर्ण अनुक्रमणिका अनुशंसित नहीं है और से सीडीटी के वर्तमान संस्करण से हटा दिया गया है।

प्रत्येक प्रोजेक्ट में एक पीडीओएम इसके साथ जुड़ा हुआ है। पीडीओएम को एक फ्लैट बाइनरी फ़ाइल के रूप में डिस्क पर संग्रहीत किया जाता है। इंडेक्सर केवल हेडर इंडेक्स करेगा जो स्रोत फ़ाइलों द्वारा शामिल किए गए हैं, इसलिए प्रोजेक्ट में एक .h फ़ाइल है जो किसी भी .c या .cpp फ़ाइल द्वारा शामिल नहीं किया जा रहा है, तो सामान्यतः यह नहीं मिलेगा अनुक्रमित। हालांकि प्रोजेक्ट में सभी फ़ाइलों को अनुक्रमणित करने के लिए सेटिंग प्राथमिकता है।

+6

मैंने विकी पेज एंट्री लिखा, और इसे यहां फिर से पढ़ा मैंने महसूस किया कि यह गलत था। पूर्ण सूचकांक वास्तव में पूरी तरह से सटीक नहीं है और इसे सीडीटी के वर्तमान संस्करण से हटा दिया गया है। मैंने विकी को अद्यतन किया है और यह उत्तर सही होने के लिए है (और मैंने यह सुनिश्चित करने के लिए अन्य सीडीटी डेवलपर्स के साथ दो बार जांच की है)। –

+1

@ माइककुकेरा हर कोई मुझे पता है कि ग्रहण का उपयोग करने वाले पुराने संस्करण का उपयोग करते हैं ताकि वे पूर्ण अनुक्रमणिका प्राप्त कर सकें, क्या आप जानते हैं कि यह कभी भी मौजूदा संस्करणों पर वापस आ जाएगा? –

+0

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

1

मेरा मानना ​​है कि यह हमेशा "कैशिंग" के बिना किसी भी पाए गए/शामिल फ़ाइलों को दोहराता है। कारण यह है कि फ़ाइलों की सामग्री प्रीप्रोसेसर परिभाषाओं पर निर्भर हो सकती है, इसलिए इसे हमेशा प्रतिस्थापित किया जाता है। फास्ट पार्सर मानता है कि फाइल का सामना करने के बाद से कुछ भी नहीं बदला है।

(लेकिन मैं गलत हो सकता है)

1

किसी को भी पता है क्या सही अंतर इन दोनों के बीच है?

मेरे अनुभव में, लगभग 32 एमबी ढेर।

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