PHP遍历数组效率分析
要求:两个分别有5000个元素的数组,计算它们的差集。
高效代码:
原因:因为KEY是进行HASH组织的,查询很快。
而VALUE是由KEY组织存放,本身没有索引,每次查找都是遍历。
备注:要针对普通环境下的负载优化,因此对于数组循环及判断上尽量减少执行时间,提高执行效率。以防止超时。
在引用中发现,在PHP中,对于数组,哪怕是一维数组,在进行查找的过程中,array_key_exists要比in_array效率高出十几倍道几十倍。在大数据量的判断中,引用键值搜索,要比直接进行数据搜索要快的很多。所以,可以有针对性的把要搜索的数据先归为一个以维数组,以键值为搜索值,将会大大提高执行效率。
普通代码:
function arr_diff($arr1,$arr2){ foreach($arr1 as $key=>$value){ if(in_array($value,$arr2,true)){ unset($arr1[$key]); } } return $arr1; }
高效代码:
function arr_diff($arr1,$arr2){ $arr2 = array_flip($arr2); foreach($arr1 as $key=>$value){ if(isset($arr2[$value])){ unset($arr[$key]); } } return $arr1; }
要求:判断某个值是否在数组中
代码:
function Isexists($key,$array){ $status = false; $array = array_flip($array); if(array_key_exists($key,$array)){ $status = true; } return status; }
原因:因为KEY是进行HASH组织的,查询很快。
而VALUE是由KEY组织存放,本身没有索引,每次查找都是遍历。
备注:要针对普通环境下的负载优化,因此对于数组循环及判断上尽量减少执行时间,提高执行效率。以防止超时。
在引用中发现,在PHP中,对于数组,哪怕是一维数组,在进行查找的过程中,array_key_exists要比in_array效率高出十几倍道几十倍。在大数据量的判断中,引用键值搜索,要比直接进行数据搜索要快的很多。所以,可以有针对性的把要搜索的数据先归为一个以维数组,以键值为搜索值,将会大大提高执行效率。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: html css div自适应屏幕宽度,高度
- 下一篇:没有了