2011-10-12 12 views
7

मैंने हाल ही में केडीवेल का प्रयास किया है। यह प्रतीकों (चर, फ़ंक्शन नाम, कक्षा, संरचना ...) के लिए देखता है semantic-complete-self-insert या M-Ret से बहुत तेज (तुरंत)। M-Ret का उपयोग करना तेज है, लेकिन इसमें अन्य आईडीई जैसे अच्छे प्रारूप नहीं हैं, इसके बजाय अर्थहीन एक From nil > जैसा है। Emacs में, मुझे कम से कम ~ 1 सेकंड के लिए इंतजार करना होगा, कई मामलों में, सीईडीईटी की सभी शामिल संबंधित स्रोत फ़ाइलों को देखने की प्रतीक्षा कर रहा है, जो बहुत लंबा लगता है।Emacs में CEDET का उपयोग करके कोड पूर्णता इतनी धीमी क्यों है?

मैंने auto complete clang का उपयोग किया, लेकिन ऐसा लगता है कि इसमें कोई गति सुधार नहीं है। ऐसा क्यों है :(? मैं Emacs और सभी से प्यार करता हूं, और जब तक मैं KDevelop खोजता हूं, तब तक मेरे सी/सी ++ के लिए इसका उपयोग नहीं कर रहा है, लेकिन Emacs का उपयोग करना मतलब है कि कोड पूर्ण होना छोटा और वैकल्पिक होना चाहिए?

उत्तर

6

यह सबसे आसान जवाब है संभावना है कि डेवलप की DUChain और पारसर्स में (मुझे लगता है) सी ++ टोकन प्रबंधन के साथ लिखा जाता है उसी प्रकार का निर्माण किया। CEDET के पारसर्स सभी Emacs लिस्प में हैं, और डेटाबेस और खोज के Emacs लिस्प में भी कर रहे हैं। कुछ टेबल बनाया गया है और करने के लिए कॉल के बीच कैश की गई हैं, वहीं Emacs में पूरा करने वाला इंजन, उन्हें अक्सर बदल दिया जाता है क्योंकि कोड बदल जाता है (टाइपिंग के कारण)। सभी तालिकाएं बनने के बाद सीईडीईटी समापन इंजन काफी तेज़ हो सकता है।

मैंने चीजों को पूरा करने के लिए कोड पूर्ण होने पर कई प्रोफ़ाइल चलाए हैं तेजी से, और duchain के बारे में थोड़ा पढ़ने के बाद, ऐसा लगता है कि केडीवेल की पूरी परियोजना के लिए एक मास्टर प्रतीक तालिका है। CEDET ऐसा नहीं कर सकता क्योंकि सभी फाइलें किसी प्रोजेक्ट में नहीं हैं, इसलिए प्रत्येक फ़ाइल को बनाने के लिए एक ऐड-हॉक तालिका की आवश्यकता होती है। मुझे इसके बारे में थोड़ी देर के बारे में पता चला है, लेकिन कभी भी CEDET के लिए प्रतीक डेटाबेस को बाहरी करने के लिए नहीं मिला है ताकि इस तरह की तालिकाओं को एक अलग थ्रेड (प्रक्रिया) में बनाया और बनाए रखा जा सके।

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