Для цикла for это быстрее считать до 0? - PullRequest
0 голосов
/ 09 мая 2019

Согласно этому блогу , этот код

for( i =0; i<10; i++)

медленнее, чем этот код

for(i=10; i--; )

потому что

Быстрее проверить, что-то равно нулю, чем сравнить два разных числа.

Это правда? Почему?

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

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

Важным элементом является не порядок зацикливания.Вы получите тот же эффект при переходе от -10 к 0. Здесь релевантным элементом является сравнение с 0. У процессоров есть специальная инструкция для сравнения с 0, тогда как для сравнения с любым другим числом необходимо использовать общее сравнение.

Так что для цикла, да, это будет быстрее.Хотя, как упоминалось ранее, гораздо больше в игре.Развертывание цикла строки оптимизации компилятора может удалить полный цикл.Практически любая операция обходится дороже, чем сама зацикливание, и алгоритмические изменения могут сэкономить много времени.

Для получения дополнительной информации о сравнении с нулем вы можете начать в следующем потоке: Сравнение с нулем быстрее, чемпо сравнению с любым другим номером?

0 голосов
/ 09 мая 2019

известно, что последняя позиция этого цикла равна 0, поэтому не может проверить условие.так что его прямой я-1, а затем распечатать

int main()
   {
      int i;
       for( i =10; i--;)
       {
       cout<<i;
       }

     return 0;
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...