最近阅读了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;}
   
 
   