您好,欢迎访问一九零五行业门户网

PHP数组性能

最近阅读了php数组相关实现原理的文章, 因为是hashtable链表的形式实现, 所以想用代码具体看一下对性能的影响, 测试了2,3组数据,不太满意, 就不贴出来分析了, 先贴代码, 后续还需要修改测试代码画曲线图来分析 说一下测试目的, 一个例子是通过取来说明php数
最近阅读了php数组相关实现原理的文章, 因为是hashtable+链表的形式实现, 所以想用代码具体看一下对性能的影响, 
测试了2,3组数据,不太满意, 就不贴出来分析了, 先贴代码, 后续还需要修改测试代码画曲线图来分析
说一下测试目的, 一个例子是通过取值来说明php数组是通过链表遍历来进行随机访问的,性能和foreach应该差不多(事实说明前者快很多,可能是底层优化过), 第二个例子是说明foreach是链表遍历,for是随机访问的遍历,前者性能高于后者,这个测试结果与猜测相符.
0;$i--){ $value = 'a'.$i; $tmp = $arr[$value]; } $timer->stop(); $time1 = $timer->gettime(); //通过遍历比较取值 $timer->start(); for ($i=$n;$i>0;$i--){ $value = 'a'.$i; foreach ($arr as $key => &$val){ if ($val == $value){ $tmp = $val; break; } } } $timer->stop(); $time2 = $timer->gettime(); unset($val); echo time1 $time1 time2 $time2;}function comparewhile(){ //生成测试样本数组 require_once '../../include/timer.cls.php'; $arr = array(); $n = 1000000; for ($i=$n;$i>0;$i--){ $arr[$i] = $i; } $tmp = ''; //遍历性能比较 $timer = new timer(); $timer->start(); for ($i=1;$istop(); $time1 = $timer->gettime(); $timer->start(); foreach ($arr as $key => &$val){ $tmp = $val; } $timer->stop(); $time2 = $timer->gettime(); unset($val); echo time1 $time1 time2 $time2;}
其它类似信息

推荐信息