दिलचस्प पोस्ट
पायथन में मल्टीप्रोसीसिंग ड्रीम्य 100% सीपीयू का उपयोग नहीं कर रहा है स्थिर जोड़ने को बढ़ावा दें क्या कोई जावा वीएम है जो एक फ़ाइल में अपनी स्थिति को बचा सकते हैं और फिर उस स्थिति को पुनः लोड कर सकते हैं? क्रोम / फ़ायरफ़ॉक्स console.log हमेशा अपरिभाषित कह रही एक पंक्ति जोड़ता है प्रथम और अंतिम नाम के लिए नियमित अभिव्यक्ति दो वर्षों में महीने के आखिरी दिन का अनुक्रम जनरेट करें सी # अन्य कोड का उपयोग कर क्यों (शून्य) 0 सी और सी ++ में कोई संचालन नहीं है? IPython / jupyter नोटबुक कार्य निर्देशिका बदलें <P> और <div> के बीच अंतर क्या है? एंड्रॉइड एमुलेटर में एपीके फ़ाइल कैसे स्थापित करें? पायथन में व्यावसायिक दिन कैसे पता चलेगा कि दो इमोजी एक इमोजी के रूप में प्रदर्शित किए जाएंगे? Std :: array को कैसे प्रारंभ करें <टी, एन> सुंदर ढंग से अगर टी डिफ़ॉल्ट रूप से निर्मित नहीं है? सी #: डिकोडिंग के लिए क्लास उद्धृत छापने योग्य एन्कोडिंग?

+ ऑपरेटर कम प्रदर्शनकर्ता StringBuffer.append () से कम है

मेरी टीम में, हम आमतौर पर इस तरह से स्ट्रिंग कॉन्सटेन्टेशन करते हैं:

var url = // some dynamically generated URL var sb = new StringBuffer(); sb.append("<a href='").append(url).append("'>click here</a>"); 

जाहिर है निम्नलिखित अधिक पठनीय है:

 var url = // some dynamically generated URL var sb = "<a href='" + url + "'>click here</a>"; 

लेकिन जेएस विशेषज्ञों का दावा है कि + ऑपरेटर StringBuffer.append() से कम प्रदर्शनकर्ता है। क्या यह वाकई सच है?

Solutions Collecting From Web of "+ ऑपरेटर कम प्रदर्शनकर्ता StringBuffer.append () से कम है"

इंटरनेट एक्सप्लोरर एकमात्र ब्राउज़र है जो वास्तव में आज की दुनिया में इस से ग्रस्त है। (संस्करण 5, 6 और 7 कुत्ते धीमे थे। 8 एक ही गिरावट नहीं दिखाता है।) और क्या है, IE धीमा हो जाता है और धीमी गति से आपकी स्ट्रिंग कितनी है

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

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

यहां एक विस्तृत निष्पादन विश्लेषण है जो कई अलग-अलग ब्राउज़रों में सभी अलग-अलग जावास्क्रिप्ट कन्टेनटाइनेशन विधियों का उपयोग कर प्रदर्शन दिखाता है; स्ट्रिंग प्रदर्शन एक विश्लेषण

एक बार में शामिल होने (), concat () एक बार, के लिए () के लिए, + = के लिए, concat () के लिए

अधिक:
Ajaxian >> स्ट्रिंग प्रदर्शन IE में: Array.join बनाम + = जारी रखा

हां यह सच है लेकिन आपको परवाह नहीं करना चाहिए पढ़ना आसान है कि एक के साथ जाओ। यदि आपको अपना ऐप बेंचमार्क करना है, तो बाधाओं पर ध्यान केंद्रित करें।

मुझे लगता है कि स्ट्रिंग कंसैनेटेशन आपके बाधाओं को नहीं होने जा रहा है।

माइकल हरेन के साथ सहमत

इसके अलावा एरे के उपयोग पर विचार करें और अगर वास्तव में कोई समस्या है तो इसमें शामिल होना चाहिए।

 var buffer = ["<a href='", url, "'>click here</a>"]; buffer.push("More stuff"); alert(buffer.join("")); 

इसे इस्तेमाल करे:

 var s = ["<a href='", url, "'>click here</a>"].join(""); 

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

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

पहले से ही कुछ उपयोगकर्ताओं ने ध्यान दिया है: यह छोटे तारों के लिए अप्रासंगिक है।

और फ़ायरफ़ॉक्स, सफारी या गूगल क्रोम में नए जावास्क्रिप्ट इंजन इतने अनुकूल हैं

 "<a href='" + url + "'>click here</a>"; 

के रूप में उपवास के रूप में है

 ["<a href='", url, "'>click here</a>"].join(""); 

Knuth के शब्दों में, "समय से पहले अनुकूलन सभी बुराइयों की जड़ है!" छोटे से किसी भी तरह की ओर रुख के अंत में असर नहीं पड़ेगा; मैं और अधिक पठनीय एक चुनना चाहते हैं

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

मुझे पता है कि यह पोस्ट लंगड़ा है, लेकिन मैं गलती से पूरी तरह से कुछ अलग तरह से सोच रहा था कि यह एक अलग धागा था और मुझे नहीं पता कि पोस्ट कैसे हटाना है। मेरी गलती…

एक त्वरित बेंचमार्क सेट करना और jspref.com का उपयोग करते हुए जावास्क्रिप्ट प्रदर्शन विविधताओं को देखना बहुत आसान है। जो शायद इस प्रश्न के बारे में नहीं पूछा गया था। लेकिन लोगों के लिए इस सवाल पर ठोकर खाई जा रही है कि उन्हें साइट पर एक ही जगह लेनी चाहिए।

मैंने http://jsperf.com/string-concat-methods-test पर concatenation के विभिन्न तरीकों का त्वरित परीक्षण किया।

मैं कार्यात्मक शैली का उपयोग करना चाहता हूं, जैसे कि:

 function href(url,txt) { return "<a href='" +url+ "'>" +txt+ "</a>" } function li(txt) { return "<li>" +txt+ "</li>" } function ul(arr) { return "<ul>" + arr.map(li).join("") + "</ul>" } document.write( ul( [ href("http://url1","link1"), href("http://url2","link2"), href("http://url3","link3") ] ) ) 

यह शैली पठनीय और पारदर्शी लगता है यह उपयोगिताओं के निर्माण की ओर जाता है जो कोड में पुनरावृत्ति को कम कर देता है।

यह भी स्वचालित रूप से मध्यवर्ती तार का उपयोग करने के लिए जाता है

जहां तक ​​मुझे पता है, हर सम्मिलन में एक स्मृति पुन: नियोजन है। तो समस्या यह करने वाले ऑपरेटर नहीं है, समाधान संयोजन की संख्या को कम करने के लिए है। उदाहरण के लिए, जब आप कर सकते हैं तब चलने वाले संरचनाओं के बाहर सम्मिलन करते हैं।

हां, सामान्य मानक के अनुसार। उदाहरण: http://mckoss.com/jscript/SpeedTrial.htm

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

आप बेहतर डोम हेरफेर देखना चाहते हैं