Reg для цикла, который является лучшим способом - PullRequest
0 голосов
/ 23 августа 2011

я написал код с использованием цикла for двумя способами, как показано ниже

первый способ

for(int i=0;i<myList.Items.Count;i++)
{
.....
.....
.....
}

второй способ

int itemsCount = myList.Items.Count;
for(int i=0;i<itemsCount;i++)
{
.....
.....
.....
}

на мой взгляд первый способ лучше, хотя каждый прирост i оценивает его проверку (i

Я хочу знать, как это работает, когда я написал код, как указано выше, и сказать мне, какой путь большелучше с точки зрения производительности

1 Ответ

0 голосов
/ 23 августа 2011

Я считаю, что первый способ (в некоторых компиляторах) является более оптимальным способом в некоторых обстоятельствах.

Вы не указываете язык, но это может быть c # - поэтому я отвечу за этот компилятор. Я полагаю, что в C # первый способ запуска быстрее, поскольку он позволяет компилятору обходить границы массивов, проверяя, обращаетесь ли вы к элементам элементов в вашем цикле. Если вы используете переменную itemsCount, компилятору становится сложнее отслеживать, что переменная, используемая в цикле, имеет безопасное значение. Это относится только к массиву с локальной областью действия.

Этот аргумент может иметь место для других языков, таких как Java, которые могут использовать похожий цикл.

Вот еще один вопрос, который касается этого вопроса с циклами for в C #.

Я бы также добавил (следуя комментарию @Evan по этому вопросу), что подобная оптимизация редко необходима, если только у вас нет особой необходимости в быстром разделе кода. Напишите, что является наиболее читабельным и с меньшей вероятностью вызывает проблемы, а затем оптимизируйте, где это необходимо.

...