나는 정렬에 대해 공부와 나는 삽입 정렬 기능 (video)했습니다 :PHP 삽입 정렬 기능 성능
<?php
set_time_limit(null);
function insertSort(array &$array)
{
$array_size = count($array);
$tmp = null;
for ($i = 0; $i < $array_size; $i++)
{
$j = $i + 1;
if ($j == $array_size)
{
break;
}
while ($array[$j] < $array[$i])
{
$tmp = $array[$i];
$array[$i] = $array[$j];
$array[$j] = $tmp;
if ($i > 0)
{
$i--;
}
$j--;
}
}
}
$array = range(0, 100);
shuffle($array);//array(3, 0, 1, 8, 7, 2, 5, 4, 9, 6);
$time_start = microtime(true);
insertSort($array);
$time_end = microtime(true);
echo ($time_end - $time_start);
?>
를 I했습니다 다음과 같은 결과 microtime에있어 :
10000 integers - 69.174551010132
5000 integers - 16.151810884476
1000 integers - 0.7065761089325
500 integers - 0.18473505973816
100 integers - 0.0077528953552246
삽입 정렬 기능의 성능을 어떻게 향상시킬 수 있습니까? 감사합니다.
배열이 반복되는 순서를 보장합니다. foreach *는 비 순차 순서로 요소를 반환 할 수 있습니다. –
foreach의 성능이 좋지 않습니다 (http://www.phpbench.com/). 고맙습니다. – thom
실제 성능에 문제가 있습니까? 실용적인 하나? phpbench는 초 단위로 백만 분의 1 초를 처리합니다. 거기에 표시된 대부분의 비교는 코드에 실제 영향을주지 않습니다. 모든 데이터베이스 요청은 수천 배나 오래 걸립니다. –