关于 为何有序数组比无序数组快?

早上看到一篇#技术晨读php

 分支预测:为何有序数组比无序数组快?
https://mp.weixin.qq.com/s/mnvBNkMfrDS6jPKRmXQAHg 
由此想到除了js,对于其余语言相似php应该也一样适用,心血来潮写了个简单的代码作测试
 

<?php
$a1 = array();
for ($i = 0;$i<1000000;$i++){
$a1[] = $i;
}
shuffle($a1);  //打乱数组
$mic1 = microtime();
$t = 0;
foreach($a1 as $value){
$t += $value;
}数组

$mic2 = microtime();
echo $mic2 - $mic1;
?>性能

 

经过调用这部分代码,注释或开启 shuffle($a1)  行作到简单的数组无序排列,作一个简单测试,大体结果是若是是有序数组的状况下,执行时间$mic2 - $mic1大约为 0.05左右,若是是使用shuffle打乱数组后执行,$mic2 - $mic1大约在0.2-0.25测试

结论:因为测试样本数据所作的处理过小,即便是100w个数字作循环也不是一个很大的量,只能从极小的差距中判别性能差距,若是样本数据变大,执行的逻辑变复杂,测试结果会更加明显,因此在进行大批量数组数据处理时,提早作好排序也是一件有必要的事情,可以在一些不经意的地方解放性能排序

相关文章
相关标签/搜索