php引用和赋值时的性能比较-简单版

分类:PHP |

php引用和赋值时的性能比较-简单版 但足以说明问题:

执行 10 w 次的循环运算:

1. 赋值方式:

<?php
$mc = memory_get_usage();
$param = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 3, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 3, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 281, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 3, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 281, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
for ($i=0;$i<100000;$i++) {
    foreach($param as $k=>$v){
        $param[$k] = $v++;
    }
}
$md = memory_get_usage();
var_dump($md - $mc);

结果:

blob.png

2. 引用方式:

<?php
$mc = memory_get_usage();
$param = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 3, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 3, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 281, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 3, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 281, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);


for ($i=0;$i<100000;$i++) {
   foreach ($param as $k => &$v) {
       $v++;
   }
   unset($v);    # 清理引用
}


$md = memory_get_usage();


var_dump($md - $mc);

结果:

blob.png

结果很明显,引用比赋值执行时间上快一倍,cpu 占用却少了一倍,如果 100 w 次循环呢:

blob.png