Недавно я слышал, что нисходящие циклы FOR работают быстрее, чем восходящие. Я задавался вопросом, почему и не нашел никаких задокументированных подтверждений. Я решил сделать следующие тесты:
<?php
$a = null;
$limit = pow(10, 9);
$time = microtime(true);
for ($i = 0; $i < $limit; ++$i) {
$a = 1;
}
$time = microtime(true) - $time;
echo "Asc " . number_format($time, 3) . PHP_EOL;
$a = null;
$time = microtime(true);
for ($i = $limit; $i > 0; --$i) {
$a = 1;
}
$time = microtime(true) - $time;
echo "Desc " . number_format($time, 3) . PHP_EOL;
Я был очень удивлен, когда имел разные результаты - Asc 84.365 Desc 64.448
Не могли бы вы сказать мне, что я сделал неправильно в тесте или почему нисходящий циклна самом деле быстрее?
Спасибо.