Если вы хотите быструю петлю, вы должны развернуть ее или использовать устройство для прослушивания.
Вы также можете использовать цикл for ( demo ):
for ($var = 0; ++$var < 10; ) {
// do nothing
}
Вы также можете сократить цикл выполнения ( demo ):
$var=0;
do {
echo "Hello";
} while (++$var < 10);
Но коды операций те же.
А вот модифицированная версия устройства duff от php.net:
If you're already using the fastest algorithms you can find (on the order of O(1),
O(n), or O(n log n)), and you're still worried about loop speed, unroll your loops
using e.g., Duff's Device:
<?php
$n = $ITERATIONS % 8;
while ($n--) $val++;
$n = (int)($ITERATIONS / 8);
while ($n--) {
$val++;
$val++;
$val++;
$val++;
$val++;
$val++;
$val++;
$val++;
}
?>
(Это модифицированная форма оригинального устройства Даффа, потому что PHP не понимает
вопиющий синтаксис оригинала.)
Это алгоритмически эквивалентно общей форме:
<?php
for ($i = 0; $i < $ITERATIONS; $i++) {
$val++;
}
?>
$val++ can be whatever operation you need to perform ITERATIONS number of times.
On my box, with no users, average run time across 100 samples with ITERATIONS =
10000000 (10 million) is:
Duff version: 7.9857 s
Obvious version: 27.608 s