С точки зрения производительности следующий код должен быть написан следующим образом:
Код: Выделить всё
int maxResults = criteria.MaxResults;
if (maxResults > 0)
{
while (accounts.Count > maxResults)
accounts.RemoveAt(maxResults);
}
Код: Выделить всё
if (criteria.MaxResults > 0)
{
while (accounts.Count > criteria.MaxResults)
accounts.RemoveAt(criteria.MaxResults);
}
Изменить: критерии — это класс, а MaxResults — это простое целочисленное свойство (т. е. public int MaxResults { get { return _maxResults; } ).
Обрабатывает ли компилятор C# MaxResults > как черный ящик и каждый раз оценивать его? Или он достаточно умен, чтобы понять, что у меня есть 3 вызова одного и того же свойства без изменения этого свойства между вызовами? Что, если MaxResults является полем? ?
Одним из законов оптимизации является предварительный расчет, поэтому я инстинктивно написал этот код, как в первом листинге, но мне любопытно, делается ли такая вещь для меня автоматически (опять же, игнорируйте читаемость кода).
(Примечание: меня не интересует аргумент «микрооптимизация», который может быть справедлив в конкретных случай, который я опубликовал. Мне просто нужна теория, объясняющая, что происходит или не происходит.)
Подробнее здесь: https://stackoverflow.com/questions/216 ... -this-code