function minmax1(array $a,array $b,int $n)
{
for($i=0;$i<$n;$i++)
{
if($a[i] >$b[i])
{
$t = $a[i];
$a[$i] = $b[$i];
$b[$i] = $t;
}
}
}
function minmax2(array $a,array $b,int $n)
{
for($i=0;$i<$n;$i++)
{
$min = $a[$i]<$b[$i] ? $a[$i] : $b[$i];
$max = $a[$i]<$b[$i] ? $b[$i] : $a[$i];
$a[$i] = $min;
$b[$i] = $max;
}
}
function merge1(array $src1,array $src2,array $dest=[],int $n)
{
$i1 = 0;
$i2 = 0;
//$id = 0;
while($i1<$n && $i2 < $n)
{
if($src1[$i1] < $src2[$i2])
{
$dest[] = $src1[$i1++];
}
else
{
$dest[] = $src2[$i1++];
}
}
while($i1<$n)
{
$dest[] = $src1[$i1++];
}
while($i2<$n)
{
$dest[] = $src2[$i2++];
}
}
function merge2(array $src1,array $src2,array $dest=[],int $n)
{
$i1 = 0;
$i2 = 0;
//$id = 0;
while($i1<$n && $i2 < $n)
{
$dest[] = $src1[$i1]< $src2[$i2] ? $src1[$i1++]:$src2[$i2++];
}
while($i1<$n)
{
$dest[] = $src1[$i1++];
}
while($i2<$n)
{
$dest[] = $src2[$i2++];
}
}
function buildData(int $len)
{
$ret = [];
if($len>0)
{
for($i=0;$i<$len;$i++)
{
$ret[] = mt_rand(0,1000);
}
}
return $ret;
}
$a = new PerformanceTest();
$num = 1000;
$v1= buildData($num);
$v2= buildData($num);
$count = 0;
$count1 = 0;
$loop = 0;
Loop:
$a->begin();
minmax1($v1,$v2,$num);
$a->end();
$a1=$a->getSpentTime();
$a->begin();
minmax2($v1,$v2,$num);
$a->end();
$a2=$a->getSpentTime();
$a->begin();
merge1($v1,$v2,[],$num);
$a->end();
$a3=$a->getSpentTime();
$a->begin();
merge2($v1,$v2,[],$num);
$a->end();
$a4=$a->getSpentTime();
if($a2<$a1)
{
$count++;
}
if($a4<$a3)
{
$count1++;
}
if($loop<100)
{
$loop++;
goto Loop;
}
var_dump($count);
var_dump($count1);
//int(101) int(82) 第一个性能永远是最好的估计是根据数据关键路径有关 最后一个性能根据分支预测的正确性而改变
exit;