如果我有代码产生上述通知,并且类似于数组的未定义偏移量,除了重新传输错误通知之外,添加isset()
或empty()
检查是否会提高脚本的性能?
编辑:只是为了澄清,我想要错误报告,我知道isset会绕过通知,这个问题更多的是关于性能方面。
答案 0 :(得分:5)
首先,我假设你有3个选择。
第一个是关闭error_reporting
并使用未知阵列偏移而不受惩罚:
error_reporting(0);
第二种是使用@
错误抑制:
@$my_array['a'];
第三个是使用isset()
:
if (isset($my_array['a'])) {
$my_array['a'];
}
我已经攻击a quick benchmarking script,它为1000000次执行提供了以下结果:
Turning off error reporting: 6 seconds
Using error suppression: 18 seconds
Using isset(): 9 seconds
答案 1 :(得分:1)
您唯一需要的是检查您的变量是否使用isset()
进行设置,因为这会删除您的通知。我相信如果您计划使用任何可能未定义的变量,这样做是很好的做法。
另外,如果您不关心设置的变量,也可以使用@
。 (take a look here in case you don't know what @ is)
我不认为会有任何显着的性能差异(如果有微观优化),但我相信如果没有显示错误/通知/警告,会有很大的视觉改善。
关于隐藏错误/通知/警告,take a look here。
答案 2 :(得分:1)
我敢打赌,最大的性能打击将是Apache将这些错误写入文件。警告生成本身不应该太昂贵,但您可以通过使用xdebug或类似的方式分析您的代码来确定。