Сомнения во времени выполнения PHP

Я пытаюсь измерить время, необходимое PHP для сортировки данных с помощью Merge Sort. Когда я пытаюсь сортировать 10.000+ данных, расчет с использованием microtime(true) всегда возвращает значения как:

2.8610229492188E-6
4.0531158447266E-6
9.5367431640625E-7

Это даже не 1 секунда. PHP действительно так быстр? Когда я сортирую данные, мне нужно подождать несколько секунд, пока страница полностью не загрузится. Может быть, что-то не так с моим кодом.

<?php$fileName = 'Ten_Thousand_Number_List.txt';
$fileContent = file($fileName, FILE_IGNORE_NEW_LINES);

$timeStart = microtime(true);

function mergeSort(&$fileContent) {
if (sizeof($fileContent) <= 1) {
return $fileContent;
}

// Split array into 2, left and right
$leftFrag = array_slice($fileContent, 0, (int)(count($fileContent)/2));
$rightFrag = array_slice($fileContent, (int)(count($fileContent)/2));

// RECURSION
// split the two halves into their respective halves...
$leftFrag = mergeSort($leftFrag);
$rightFrag = mergeSort($rightFrag);

$returnArray = merge($leftFrag, $rightFrag);
return $returnArray;
}function merge(&$lF, &$rF) {
$result = array();
global $numberOfComparison;
// while both arrays have something in them
while (count($lF)>0 && count($rF)>0) {
if ($lF[0] <= $rF[0]) {
array_push($result, array_shift($lF));
$numberOfComparison++;
}
else {
array_push($result, array_shift($rF));
}
}

// did not see this in the pseudo code,
// but it became necessary as one of the arrays
// can become empty before the other
array_splice($result, count($result), 0, $lF);
array_splice($result, count($result), 0, $rF);

return $result;
}

$timeEnd = microtime(true);
$sortedArray = mergeSort($fileContent);
$memoryAllocation = memory_get_peak_usage();

print_r($sortedArray);
echo "<br>";
// echo "Time elapsed: " . $timeEnd . " " . $timeStart . "<br>";
echo "Time elapsed: " . ($timeEnd - $timeStart) . "<br>";
echo "Memory used: " . $memoryAllocation . "<br>";
?>

0

Решение

Вы устанавливаете свое конечное время, прежде чем что-то сортировать. Изменить:

$timeEnd = microtime(true);
$sortedArray = mergeSort($fileContent);

чтобы:

$sortedArray = mergeSort($fileContent);
$timeEnd = microtime(true);
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector