转自:https://my.oschina.net/heiing/blog/123216
$loop = 10000;
$a = array();
$start_time = microtime(true);
for ($i = 0; $i < $loop; ++$i) {
$a[$i];
}
echo 'trigger notice: ', (microtime(true) - $start_time), "\r\n";
$start_time = microtime(true);
for ($i = 0; $i < $loop; ++$i) {
isset($a[$i]) && $a[$i];
}
echo 'trigger notice: ', (microtime(true) - $start_time), "\r\n";
运行它:
时间的差异很大程度来自终端IO。
而当notice级别错误不再报告时:
error_reporting(E_ALL ^ E_NOTICE);
再运行:
性能差距变小了,但还是存在差距,多次运行发现大多都是先isset查看是否有该键再访问比较快(十倍以上性能差距),只有第一次运行时两者的访问时间相当,暂时不清楚原因。
总结:关掉notice级别错误报告有助于提升效率,但最好的方法还是开发过程中打开此错误报告,将报告的地方都改为先测试是否存在再访问,以提高代码规范和性能。