c# - .Net - When is List<T>.ForEach prefered over a standard foreach loop? -
सामान्य सूची वर्ग में एक है .पहले (कार्रवाई & lt; T & gt; कार्रवाई)
विधि। अब मैंने कुछ ऐसे सरल समय दिए हैं जो वे दोनों करते हैं और ऐसा लगता है कि जेनेरिक फॉर ईच खराब कलाकार है। (स्निपेट कंपाइलर फ्रेंडली) कोड नीचे है -
सार्वजनिक स्थिर वर्ग टाइमर {सार्वजनिक स्थिर लंबी foreachloop = 0; सार्वजनिक स्थिर लंबी Gforeachloop = 0;} सार्वजनिक वर्ग कुछ {सार्वजनिक सूची & lt; स्ट्रिंग & gt; MyStrings = नई सूची & lt; स्ट्रिंग & gt; (); सार्वजनिक कुछ () (के लिए (int i = 1; i & lt; = 5000000; i ++) {myStrings.Add (i.ToString ()); }}} सार्वजनिक वर्ग cls1 {निजी स्थिर सूची & lt; स्ट्रिंग & gt; स्ट्रिंग = नई सूची & lt; स्ट्रिंग & gt; (); निजी स्थिर सूची & lt; स्ट्रिंग & gt; अन्य स्ट्रिंग्स = नई सूची & lt; स्ट्रिंग & gt; (); सार्वजनिक स्थिर शून्य RunSnippet () {कुछ एस = नया कुछ (); स्टॉपवॉच घड़ी = नया स्टॉपवॉच (); watch.Start (); विदेशी (स्ट्रिंग x में s.myStrings) {स्ट्रिंग्स.एड (एक्स); } घड़ी। रोक (); Timer.foreachloop = watch.Elapsed मिलिसेकंड्स; watch.Reset (); watch.Start (); S.myStrings.ForEach (प्रतिनिधि (स्ट्रिंग एन) {अन्य शब्दों। जोड़ें (एन);}); s.myStrings.Clear (); watch.Stop (); Timer.Gforeachloop = watch.Elapsed मिलिसेकंड्स; डब्लूएल ("FOREACH -" + टाइमर। फोरेलोूप + ", गणना =" + स्ट्रिंग्स.काउंट); डब्ल्यूएल ("GFOREACH -" + टाइमर। ग्रैनाचलोप + ", गणना =" + अन्य स्ट्रिंग्स.काउंट); } #region सहायक विधियाँ सार्वजनिक स्थिर शून्य मुख्य () {trySnippet (try); } पकड़ (अपवाद ई) {string error = string.Format ("--- \ n स्निपेट निष्पादित करते समय निम्नलिखित त्रुटि हुई: \ n {0} \ n ---", e.ToString ()); Console.WriteLine (त्रुटि); } अंत में {Console.Write ("जारी रखने के लिए कोई भी कुंजी दबाएं ..."); Console.ReadKey (); }} निजी स्थिर शून्य WL (ऑब्जेक्ट टेक्स्ट, पैराम्स ऑब्जेक्ट [] आर्ग्स) {Console.WriteLine (text.ToString (), आर्ग्स); } निजी स्थिर शून्य आरएल () {Console.ReadLine (); } निजी स्थिर शून्य तोड़ () {System.Diagnostics.Debugger.Break (); } # मध्यांतर}
FOREACH 177 एमएमएस और जीएफओएआरएएएपी 707 एमएस पर आती है।
अब मैं अनुमान लगा रहा हूं कि इसका उपयोग करने का एक अच्छा कारण है लेकिन मैं अभी नहीं कर सकता एक के बारे में सोचो स्पष्ट रूप से निष्पादन का कारण नहीं है, इसलिए प्रश्न यह है कि यह सबसे अच्छा विकल्प कब होगा?
अग्रिम धन्यवाद।
एरिक लिपर से यह ब्लॉग पोस्ट पृष्ठभूमि देता है:
वह एक एक्सटेंशन के सामान्य सुझाव के बारे में बात कर रहा है < कोड> IEnumerable & lt; T & gt; , लेकिन दार्शनिक आक्षेप सूची & lt; T & gt; के लिए लागू होता है .कभी
भी।
यह सुझाव देता है कि हो सकता है कि यह विधि ऐसी कभी नहीं थी अच्छा विचार है, हालांकि यह "अच्छा" लग रहा है यह सिर्फ foreach
का उपयोग करने के लिए स्पष्ट है।
मैंने सुझाव दिया है कि इस तरह के तरीकों के बारे में सोचा जा सकता है।
लेकिन व्यवहार में मुझे अभी बेहतर ऐसी बग खोलने पर।
Comments
Post a Comment