Достаточно ли умен компилятор C#, чтобы оптимизировать этот код?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Достаточно ли умен компилятор C#, чтобы оптимизировать этот код?

Сообщение Anonymous »

Пожалуйста, игнорируйте читаемость кода в этом вопросе.

С точки зрения производительности следующий код должен быть написан следующим образом:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»