2012-06-21 4 views
0

В настоящее время я создаю сервер сокетов на PHP, и я хотел бы знать, какой из них будет быстрее использовать во всем этом. Я слышал, что для циклов быстрее, чем в цикле, но я не знаю, что делать.PHP: что быстрее: делать while, while или for loop

Благодаря

+0

Быстрее выполнить –

+0

Возможный дубликат: http://stackoverflow.com/questions/8081253/do-while-is-the-fastest-loop-in-php –

+0

duplicate: http://stackoverflow.com/questions/3629174/what-loop-is-faster-while-or-for –

ответ

0

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

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

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

+0

[править] –

+0

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

+0

Правильно, но утверждение «Нет измеримой разницы» не является научно обоснованным. Есть разница, и это измеримо. Достаточно ли заботиться о другом - это совсем другое дело. Вы отредактировали это слово, хороший звонок. :) –

0

Используйте все, что подходит вашей цели. для циклов и в то время как петли используются для цикла с первым условием. do-whiles гарантируют, что код запускается хотя бы один раз.

Таким образом, вы можете сразу сузить свой выбор до/в режиме или в режиме «пока», основываясь на этом ограничении. Попытка использовать несоответствующую конструкцию приведет к очень уродливому коду, который, скорее всего, будет медленнее в любом случае.

Между тем и в то время, я не думаю, что есть какая-то разница. Даже если бы вы писали научную библиотеку, это было бы едва заметно (если вообще). Общее руководство: для циклов, предназначенных для итерации через вещи, и в то время как петли используются в качестве других циклов общего назначения.

1

Если вы так обеспокоены скоростью вашего кода, профиль это. Независимо от того, что вы читаете о производительности определенных фрагментов кода (например, в таких местах, как this), может возникнуть ошибка в вашем конкретном случае - из-за какой-то странной интерпретации PHP-интерпретатора или чего-то еще.

Существует множество инструментов для профилирования, доступных для программиста PHP - начиная с простого microtime, заканчивая полными наборами профилировщиков, такими как XDebug. Я предлагаю прочитать this topic для основных рекомендаций профилирования.

3

В зависимости от теста вы используете, do петли было показано, что немного быстрее:

http://www.ebrueggeman.com/blog/php_benchmarking_loops

Test   Avg Execution Time 
for loop  23.44 ms 
while loop  24.65 ms 
do while loop 22.96 ms 

В этом benchmark, foreach было показано, что из-выполнить другие типы петель, и while было обнаружено, что вышло for. Я поднимаю это, потому что вы заметите, что это противоречит первому тезу, который я цитирую.

И, наконец, this benchmark поддерживает результаты первого, что while является незначительно быстрее, чем for.

Заключение? Никакой контрольный показатель не способен подражать вашему варианту использования в той мере, в какой вы должны основывать свое решение на нем, и это может быть микро-оптимизация, которая существенно не улучшит вашу программу. Используйте инструкцию, которая соответствует ситуации, а затем пишите тесты для тестирования собственного приложения с использованием вариантов. Это довольно тривиально, чтобы поменять while и for - попробуйте их обоих и посмотрите, что вы получаете. Затем выучите этот урок для своего следующего проекта, потому что он будет уникальным и снова заслуживает индивидуального тестирования.

Документация