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);
结果:
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);
结果:
结果很明显,引用比赋值执行时间上快一倍,cpu 占用却少了一倍,如果 100 w 次循环呢: