2011-06-10 10 views
9

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

उत्तर

11

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

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

8

प्रदर्शन प्रभाव और ईपीएसलॉन है, यानी शून्य से बहुत छोटी संख्या है। रिक्त स्थान केवल एक बार पढ़ और पार्स हो जाते हैं, रूबी कोड को तब मध्यवर्ती रूप में बदल दिया जाता है।

+0

रिक्त स्थान एक बार पढ़ा जाता है और बिल्कुल विश्लेषण नहीं किया जाता है। – EJP

+0

बकवास। लेक्सिंग चरण पार्सिंग का हिस्सा है। –

+0

बकवास। रिक्त स्थान की जांच की जाती है; परिणाम स्कैन किया गया है; और इसका परिणाम पार्स किया गया है। – EJP

9

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

कृपया रिक्त स्थान का उपयोग करें। साइन इन किया, आपका कोड पढ़ने के लिए अगला लड़का।

+0

आमेन, भाई! [] (Http://stackoverflow.com/questions/646032) –

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