编写高效PHP代码总结

来源:互联网 发布:中国电视网络电视台 编辑:程序博客网 时间:2024/05/22 01:52

在循环里进行的是数组“读”操作,则foreach比while快:

foreach ($array as $value) {
echo $value;
}

while (list($key) = each($array)) {
echo $array[$key];
}


在循环里进行的是数组“写”操作,则while比foreach快:


foreach ($array as $key => $value) {
echo $array[$key] = $value . '...';
}

while (list($key) = each($array)) {
$array[$key] = $array[$key] . '...';
}


总结:通常认为,foreach涉及到值复制,一定会比while慢,但实际上,如果仅仅是在循环里进行数组的读操作,那么foreach是很快的,这是因为PHP采用的复制机制是“引用复制,写时拷贝”,这样看来,foreach的高效读操作就不难理解了。另外,既然foreach不适合处理数组写操作,那么我们可以得出一个结论,多数情况下,类似foreach ($array as $key => $value)形式的代码都应该被替换成while (list($key) = each($array))。

For vs. While

while相对快10%左右

$obj = new SomeClass() vs. $obj =& new SomeClass()

性能差不多

echo vs. print
输出字符性能差不多,有分隔符连接的时候echo性能要好些。

isSet() vs. empty() vs. is_array()
isset和empty性能差不多,is_array性能就要相差很大,可以使用isset(*) && is_array(*) 来设置

switch/case/default vs. if/elseif/else
他们性能差不多,判断条件中的===比==有性能不少的提高

$obj = $someClass->f() vs. $obj =& $someClass->f()
$obj = $someClass->f()比$obj =& $someClass->f() 快一倍多,但是内存消耗就要大些。

使用引用Using the &-ref-operator
小数据时,引用比复制效率高
大数据时,复制比引用效率高

单引号VS双引号
单引号稍微快些
如果里面有变量时,效应有影响,可以对其转移提高效率

for($i=0; $i<sizeof($arr); $i++) Vs $count = sizeOf($arr); for($i=0; $i<$count, $i++)
后者变前者效率要快不好。其中使用sizeOf比count的效率要高

原创粉丝点击