關於 爲何有序數組比無序數組快?

早上看到一篇#技術晨讀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個數字作循環也不是一個很大的量,只能從極小的差距中判別性能差距,若是樣本數據變大,執行的邏輯變複雜,測試結果會更加明顯,因此在進行大批量數組數據處理時,提早作好排序也是一件有必要的事情,可以在一些不經意的地方解放性能排序

相關文章
相關標籤/搜索