因为PHP代码运行得很好,即使它有关于未定义索引的警告和通知以及被称为静态等的非静态方法,问题是,如果我花时间从我的代码中删除所有通知和警告将它跑得快得多?
Pas*_*TIN 85
我给一篇文章添加了书签,其中作者对此做了一些基准测试; 不幸的是,这是法语...但在这里(也许你会理解它的一些部分):Ne faites pas d'erreur
这里有数字,以帮助那些不读法语的人:
error_reporting
和display_errors
启用:5,162.76 msdisplay_errors
残疾人:136.18毫秒error_reporting
禁用:117.79毫秒这意味着,是的,PHP代码运行得更快,没有通知/警告/错误,即使没有显示也没有报告.
Derick Rethans在本文中说了同样的事情:为什么应该避免关闭操作符(@)的五个原因 (引用):
原因3:它很慢(第2部分)
每当PHP在内部生成错误消息时,它都会被处理并格式化,直到完全格式化的消息,可以直接输出到浏览器.
仅在显示之前error_reporting
检查设置.但是,这与@ -operator无关.
在error_reporting
检查之前,或者display_errors
就此而言,错误消息总是完全格式化.
取决于警告的数量,但PHP中的错误处理,即使隐藏错误消息,也相对昂贵.
你需要做些什么来估计效果是在C级上进行分析:安装valgrind(假设你在Linux上)然后运行
callgrind /path/to/bin/php /path/to/script.php
Run Code Online (Sandbox Code Playgroud)
这会生成一个名为callgrind.12345
左右的文件,将此文件加载到像kcachegrind这样的应用程序中,查找php_error_docref0
或php_error_cb
查看错误处理程序花费了多少时间.
这样做时请注意cachegrind和valgrind文档,并注意涉及许多与系统相关的变量.
编辑:哦,更多的一个音符:我假设的方式,一边给数据库和类似系统有更多的时间是花在.另外还有一个注意事项:修复通知通常会使代码在未来的更改中更加健壮,因此独立于性能是一个好主意.