Продолжить цикл Внутри оператора if против использования оператора if внутри цикла.

Например, давайте рассмотрим следующие 2 кода:

for (i = 0; i < 1000; i++)
{
   if ( i % 2 != 0)
   {
       continue;
   }
   else
   {
     ...  
   }    
}

и

for (i = 0; i < 1000; i++)
{
   if (i % 2 == 0)
   {
     ...  
   }    
}

Оба приведут к одному и тому же результату. Так какой из них использовать? Какой из них лучше? Есть ли существенные различия в производительности между этими двумя? Давайте посмотрим, что вы, ребята, видите по этому поводу. Мне нравятся обсуждения, которые я вижу здесь об этих вещах. Это может привести к лучшему написанию кода и лучшему времени выполнения. Я разместил этот вопрос, потому что я не нашел ответа на него. Я могу опубликовать еще один в будущем, если не найду ответа.

P.S. Какова цель использования продолжения внутри цикла, когда вы можете обходиться без него?

4 голоса | спросил Muaz 14 Maypm11 2011, 18:15:28

3 ответа


0

В этом конкретном примере? Нет смысла использовать continue.

Как вы упомянули, оба примера кода дают одинаковые результаты. И ни один из них не будет заметно быстрее другого.

Решение, которое вы выбираете, должно основываться на удобочитаемости и ясности , а не на какой-то ошибочной попытке "оптимизации". Имея это в виду, второй намного яснее. Я бы серьезно усомнился в программировании кого-то, кто первым использовал реальную базу кода.

В качестве основного руководства никогда не используйте if-else, когда один if сделаю. В этом случае вы сравниваете !=, а затем находите противоположность этому с помощью else - это почти то же самое, что сказать !(!=), что приводит к двойному отрицательному значению. Очень трудно читать или понимать. В общем, вы должны попытаться оценить положительные условия в выражении if, а не в отрицательных, чтобы предотвратить именно это.

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

ответил Cody Gray 14 Maypm11 2011, 18:20:48
0

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

ответил Flawless 14 Maypm11 2011, 18:21:18
0

Разницы не будет достаточно, чтобы оправдать использование уродливой формы.

Лучше, чем в этом конкретном случае, было бы

For(i = 0; i < 1000; i+=2)
{
    ...    
}

поскольку вообще нет необходимости проверять делимость.

ответил Don Roby 14 Maypm11 2011, 18:23:36

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132