Пожалуйста, игнорируйте читаемость кода в этом вопросе.
Что касается производительности, следует написать следующий код следующим образом:
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);
}
?
Изменить: criteria
- это class
, а MaxResults
- простое целочисленное свойство (т.е. public int MaxResults { get { return _maxResults; } }
.
Компилятор С# рассматривает MaxResults
как черный ящик и оценивает его каждый раз? Или он достаточно умен, чтобы понять, что у меня есть 3 вызова одного и того же свойства без изменения этого свойства между вызовами? Что, если MaxResults
было полем?
Один из законов оптимизации - предварительное вычисление, поэтому я инстинктивно написал этот код, как первый список, но мне любопытно, что это делается для меня автоматически (опять же, игнорируя читаемость кода).
(Примечание: мне не интересно слышать аргумент "микро-оптимизации", который может быть действительным в конкретном случае, который я опубликовал. Мне просто хотелось бы, чтобы какая-то теория шла о том, что происходит или не происходит. )