Я использую CultureInfo.CurrentCulture
при форматировании строк, используя string.format
Цитировать этот блог
Это просто означает, что если
Вы часто используете CurrentCulture, это
может быть стоит прочитать это в
частная переменная, а не делая
много звонков
CultureInfo.CurrentCulture, в противном случае
вы используете такты
без необходимости.
согласно этому автору
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 является собственностью
Есть ли снижение производительности, связанное с многократным доступом к свойству ??
Также я сделал некоторый эмпирический анализ, и мои тесты показали, что использование локальной переменной дороже, чем непосредственное использование свойства.
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
лучше, чем использование локальной переменной (что противоречит мнению авторов). Или я что-то здесь упускаю?
Редактировать: я не сбрасывал секундомер до второй итерации. отсюда и разница. сброс секундомера, обновление счетчика итераций и результат этого редактирования