Какой цикл быстрее, пока или для? - PullRequest
31 голосов
/ 02 сентября 2010

Вы можете получить тот же вывод с циклами for и while:

В то время как:

$i = 0;
while ($i <= 10){
  print $i."\n";
  $i++;
};

Для:

for ($i = 0; $i <= 10; $i++){
  print $i."\n";
}

Но какой из них быстрее?

Ответы [ 16 ]

0 голосов
/ 17 июля 2017

Что касается бесконечных циклов, * цикл 1001 * лучше, чем while(1), поскольку while оценивает каждый раз условие, но опять-таки это зависит от компилятора.

0 голосов
/ 24 февраля 2015

Мне было интересно то же самое, поэтому я погуглил и оказался здесь.Я сделал небольшой тест на python (очень простой), чтобы увидеть, и вот что я получил:

Для:

def for_func(n = 0):
    for n in range(500):
        n = n + 1

python -mtimeit "import for_func; for_func.for_func ()"> for_func.txt

10000 циклов, лучшее из 3: 40,5 usec на цикл

При:

def while_func(n = 0):
    while n < 500:
        n = n + 1

python -m timeit "import while_func; while_func. while_func ()"> while_func.txt

10000 циклов, лучший из 3: 45 usec на цикл

0 голосов
/ 09 января 2013

Технически не является ли цикл For Do Do Do?..

Также, когда дело доходит до петель.Если вы планируете только получать данные и никогда не изменять данные, вы должны использовать foreach.Если по какой-то причине вам нужны фактические индексы, вам нужно увеличить их, поэтому вам следует использовать обычный цикл for.

for (Data d : data)
{
       d.doSomething();
}

должен быть быстрее, чем ...

for (int i = 0; i < data.length; ++i)
{
      data[i].doSomething();
}
0 голосов
/ 02 сентября 2010

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

Большинство компиляторов будут компилировать точно такой же исполняемый код, например, в CIL (.NET), который они определенно делают.

Источник: vcsjones @ http://forums.asp.net/t/1041090.aspx

В любом случае, тело цикла - это место, где время обработки будет потрачено не так, как вы выполняете итерацию.

0 голосов
/ 02 сентября 2010

Неважно, что быстрее.Если это имеет значение, тогда сравните его, используя свой реальный код, и убедитесь сами.

Также могут быть полезны ответы на этот другой вопрос: Как написать более эффективный код

0 голосов
/ 02 сентября 2010

Зависит от языка и, скорее всего, от его компилятора, но они должны быть эквивалентны в большинстве языков.

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