Итак, какие из следующих 2-х кодовых блоков «лучше» в отношении производительности/наилучшей практики и т.д.Лучшая практика для нескольких использований .Count
Назвав .Count
собственности несколько раз при каждом использовании.
List<string> myStrings = new List<string>();
myStrings.Add("foo");
myStrings.Add("bar");
if (myStrings.Count >= 1)
{
Console.WriteLine(myStrings.Count);
}
Хранение счета один раз и его повторное использование, так как мы можем предположить, что никаких изменений в списке не будет.
List<string> myStrings = new List<string>();
myStrings.Add("foo");
myStrings.Add("bar");
int myCount = myStrings.Count;
if (myCount >= 1)
{
Console.WriteLine(myCount);
}
Не будет никакой разницы. JIT все равно оптимизирует его. – MarcinJuraszek
В этом случае оптимизатор может доказать, что 'myStrings' не будет использоваться в другом потоке, но действительно ли это делает эту оптимизацию? – zmbq
ИМХО, трудно сказать без контекста. Имеет ли несколько инструкций CPU значение производительности вашего приложения? Вы собираетесь обобщать вопрос/ответ для однопоточных и многопоточных приложений (т. Е. Где «List.Count» может меняться между двумя вызовами)? Производительность является субъективной и наилучшей практикой. Лучшая практика заключается в том, чтобы понять и реализовать то, что дает правильную семантику для ** вашего сценария **. Любые другие слепые советы * могут быть рецептом неприятностей в некоторых случаях. Пример. Http://stackoverflow.com/questions/27770138/tostring-and-string-concatenation-unexpected-behavior –