मैं CultureInfo.CurrentCulture
उपयोग कर रहा हूँ जब string.format
प्रदर्शन पर विचार जब गुणों का उपयोग करके कई बार
का उपयोग कर कि अगर आप CurrentCulture एक बहुत का उपयोग कर रहे this blog
इतनी के रूप में इस लेखकयह सिर्फ निहितार्थ है के शब्दों में मेरे तार formating, यह एक निजी चर में इसे पढ़ने के बजाय CultureInfo.CurrentCulture के लिए कॉल के अनेक परिवर्तन कर के लायक हो सकता है अन्यथा आप घड़ी चक्र 0 अप का उपयोग कर रहेअनावश्यक रूप से।
var culture = CultureInfo.CurrentCulture
string.Format(culture,"{0} some format string","some args");
string.Format(culture,"{0} some format string","some other args");
प्रति
string.Format(CultureInfo.CurrentCulture,"{0} some format string","some args");
string.Format(CultureInfo.CurrentCulture,"{0} some format string","some other args");
MSDN के अनुसार
की तुलना में बेहतर है? CultureInfo.CurrentCulture is a property
वहाँ एक प्रदर्शन जब एक संपत्ति कई बार तक पहुँचने संबंधित जुर्माने की है ?
इसके अलावा मैं कुछ emperical विश्लेषण किया था और मेरी परीक्षण मुझे पता चलता है कि एक स्थानीय चर का उपयोग कर सीधे संपत्ति का उपयोग कर से ज्यादा महंगा है।
Stopwatch watch = new Stopwatch();
int count = 100000000;
watch.Start();
for(int i=0;i<count;i++)
{
string.Format(CultureInfo.CurrentCulture, "{0} is my name", "ram");
}
watch.Stop();
//EDIT:Reset watch
watch.Reset();
Console.WriteLine(watch.Elapsed);
Console.WriteLine(watch.ElapsedMilliseconds);
Console.WriteLine(watch.ElapsedTicks);
Console.WriteLine("--------------------");
var culture = CultureInfo.CurrentCulture;
watch.Start();
for (int i=0; i < count; i++)
{
string.Format(culture, "{0} is my name", "ram");
}
watch.Stop();
Console.WriteLine(watch.Elapsed);
Console.WriteLine(watch.ElapsedMilliseconds);
Console.WriteLine(watch.ElapsedTicks);
परिणाम:
00:00:29.6116306
29611
68922550970
--------------------
00:00:27.3578116
27357
63676674390
मेरे परीक्षणों से पता चलता है कि CultureInfo.CurrentCulture
संपत्ति का उपयोग कर स्थानीय चर (जो लेखकों देखने के साथ विपरीत है) का उपयोग कर से बेहतर है। या मुझसे यहां कुछ छूट रहा है ?
संपादित करें: मैं तेह दूसरी यात्रा से पहले स्टॉपवॉच को रीसेट नहीं किया गया। इसलिए अंतर। स्टॉपवॉच को रीसेट करना, पुनरावृत्ति गिनती को अपडेट करना और परिणाम इस संपादन में
अपने परीक्षण कोड में आप स्टॉपवॉच को रीसेट नहीं करते हैं। कैश संदर्भ का उपयोग वास्तव में तेज़ है। – Steven
CultureInfo.CurrentCulture सस्ता नहीं है, लेकिन स्ट्रिंग। फोर्मेट अधिक महंगा है। – Steven
स्टीवन, आप सही हैं, मैं स्टॉप घड़ी को रीसेट नहीं कर रहा था। आप इसे उत्तर के रूप में क्यों नहीं पोस्ट करते हैं और मैं अपना पोस्ट + अपडेट को उत्तर के रूप में अपडेट करूंगा। जो उत्सुक हैं, उनके लिए स्थानीय चर का उपयोग करना तेजी से है। 100 मिलियन पुनरावृत्तियों के लिए लगभग 2.473 सेकंड का अंतर !!! – ram