关于 PHP 执行时间的疑问

Doubts About PHP Execution Time

我正在尝试测量 PHP 使用合并排序对数据进行排序所花费的时间。当我尝试对 10.000 多个数据进行排序时,使用 microtime(true) 的计算总是 returns 值,例如:

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>";
?>

您在对任何内容进行排序之前设置结束时间。变化:

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

至:

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