2013-01-17 25 views
11

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

+21

यहां तक ​​कि अगर ऐसा होता है, तो यह कुछ ऐसा नहीं होगा जिसे आप कल्पना करेंगे। अपने सीपीयू प्रशंसक को धूलने के बारे में और चिंता करें। – Zirak

+0

आप इसे छोड़ नहीं सकते हैं और फिर चिंता करने की ज़रूरत नहीं है। – George

+1

तो आप पूछ रहे हैं कि * पार्सिंग * अर्धविराम के बिना जावास्क्रिप्ट तेज या धीमा है? मुझे लगता है कि वास्तव में वास्तविक स्रोत कोड पर निर्भर करता है, यानी संभव है कि पार्सर जा सकता है अगर अर्धविराम होता है या नहीं और इससे कैसे ठीक हो सकता है। कोड को पार्स करने के बाद यह किसी भी तरह से कोई फर्क नहीं पड़ता। इसलिए आप इसके साथ * कोड के लिए "स्टार्टअप टाइम" में सुधार कर रहे हैं और संभवतः किसी पृष्ठ के समग्र प्रदर्शन पर इसका कोई प्रभाव नहीं पड़ता है। –

उत्तर

17

रिक्त स्थान, अर्ध-कॉलन और टिप्पणियों के साथ एक जावास्क्रिप्ट फ़ाइल भारी है। यह मुख्य प्रभाव है।

लेकिन आप एक कोडर हैं और आपको कोड को बनाए रखना है, इसलिए यह बहुत मामूली प्रभाव पठनीयता पर प्रतिकूल एक से बहुत कम महत्वपूर्ण है। और अर्धविरामों को छोड़कर मतलब है कि आप जानते हैं जब आप उन्हें छोड़ सकते हैं। लेकिन rules इतना आसान नहीं हैं और उन्हें सीखना आपके समय के लायक नहीं है।

सेमी-कोलों को छोड़ दें जहां वे हैं, आप बग से बचेंगे।

और ब्राउज़र के लिए एक संक्षिप्त संक्षिप्त कोड बनाने के लिए एक मिनीफायर (उदाहरण के लिए Closure compiler) का उपयोग करें यदि आप वास्तव में सबसे हल्का संभव कोड चाहते हैं। यह तुम्हारा कर्तव्य है, न कि तुम्हारा।

+7

+1 एक समझदार उत्तर के लिए। इस तरह के माइक्रो अनुकूलन व्यर्थ हैं - जब तक शैली के उद्देश्यों के लिए मुझे लगता है कि यह सवाल मंथन नहीं है। – rlemon

+0

यदि आपके पास एक ऑपरेटर के साथ शुरू होने वाली रेखा है, उदाहरण के लिए: '+ -/* ([तब वह पंक्ति उस से पहले एक के साथ बातचीत करने का प्रयास करेगी जब तक उस रेखा के सामने कहीं भी अर्धविराम न हो, और अंत पिछले एक के। –

1

कोड सिंटैक्स में छोटे अंतर आमतौर पर कोड के प्रदर्शन पर बहुत कम प्रभाव डालते हैं। कोड की एक स्ट्रिंग को समझने की प्रक्रिया बहुत ही कुशल है और वास्तव में कोड चलाकर लिया गया समय का एक छोटा सा अंश लेता है।

एक अक्षम एल्गोरिदम या एक अतिरिक्त नेटवर्क कॉल, जैसे कि एक के बजाय एकाधिक .js फ़ाइलों को खींचने से कहीं अधिक प्रभाव पड़ता है।

7

जेएस में अर्धविरामों को छोड़ना बड़ी बहस है, लेकिन हमें हमेशा अर्धविराम रखना चाहिए। यदि आप प्रदर्शन के बारे में बात करते हैं, तो अर्धविराम रखने के दौरान बहुत कम लाभ होगा।

लेकिन चीजें केवल यहां समाप्त नहीं होती हैं। प्रदर्शन के अलावा एक बड़ी चीज है जिसे देखभाल करने की आवश्यकता है।

डौग Crockford इस presentation में बहुत अच्छी तरह से अर्धविराम की जरूरत बताते हैं:

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

इस सेमीकॉलन के अलावा कोड अधिक संरचना प्रदान करता है और इसे क्लीनर बनाता है - इसके अतिरिक्त, उनकी उपस्थिति कुछ डेवलपर्स को उनके कोड को खराब करने की अनुमति देती है।

आशा है कि यह आपकी मदद करेगा।

2

प्रदान किए गए परीक्षण का जिक्र करते हुए: यह वास्तव में एएसआई बनाम गैर एएसआई के प्रदर्शन अंतर को स्पष्ट नहीं करता है। प्रदर्शन पर असर डालने की संभावना है। दुभाषिया या जेआईटी प्रत्येक पुनरावृत्ति के लिए ऐसा नहीं करेगा, लेकिन केवल एक बार। बड़े कोड बेस लोड करते समय प्रभाव केवल तभी देखा जाएगा। अर्धविराम जेआईटी या दुभाषिया को अगले टोकन से इसे घुमाने के बजाय अंततः कथन की पहचान करने की अनुमति देता है।

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