- microtime: documentation ( source)
- round: documentation ( source)
- range: documentation ( source)
- array_walk: documentation ( source)
<?php
// тест для foreach
function foreach_test($range)
{
// массив
$array = range(1, $range);
// старт
$start = microtime(true);
// обработка массива
foreach ($array as &$value) {
$value /= 2;
}
// финиш
$finish = microtime(true);
// время выполнения
return round($finish - $start, 5);
}
// тест для array_walk
function array_walk_test($range)
{
// массив
$array = range(1, $range);
// старт
$start = microtime(true);
// обработка
array_walk($array, function(&$value){
$value /= 2;
});
// финиш
$finish = microtime(true);
// время выполнения
return round($finish - $start, 5);
}
// тесты
$tests = array(1000);
// выполнение тестов и результаты
foreach ($tests as $range) {
$ft = foreach_test($range);
$awt = array_walk_test($range);
$div = round($awt / $ft, 2);
echo "Количество элементов: {$range} <br>";
echo "Время foreach: {$ft}с <br>";
echo "Время array_walk: {$awt}с <br>";
echo "foreach быстрей array_walk в {$div} раз <br><br>";
}