php是否在没有警告的情况下运行得更快?

php是否在没有警告的情况下运行得更快?,php,performance,Php,Performance,由于PHP代码即使充斥着关于未定义索引和非静态方法被称为静态的警告和通知,也能正常运行,所以问题是,如果我花时间从代码中删除所有通知和警告,它会运行得更快吗?取决于警告的数量,但是PHP中的错误处理,即使在隐藏错误消息时,也相对昂贵 要估计效果,您需要做的是在C级别进行评测:安装valgrind(假设您在Linux上),然后运行 callgrind /path/to/bin/php /path/to/script.php 这将生成一个名为callgrind.12345的文件,将该文件加载到类似

由于PHP代码即使充斥着关于未定义索引和非静态方法被称为静态的警告和通知,也能正常运行,所以问题是,如果我花时间从代码中删除所有通知和警告,它会运行得更快吗?

取决于警告的数量,但是PHP中的错误处理,即使在隐藏错误消息时,也相对昂贵

要估计效果,您需要做的是在C级别进行评测:安装valgrind(假设您在Linux上),然后运行

callgrind /path/to/bin/php /path/to/script.php
这将生成一个名为
callgrind.12345
的文件,将该文件加载到类似的应用程序中,然后查找
php\u error\u docref0
php\u error\u cb
以查看在错误处理程序中花费了多少时间

进行此操作时,请注意cachegrind和valgrind文档,并注意涉及到许多依赖于系统的变量


编辑:哦,还有一个注意事项:我假设在与数据库和类似系统交谈时花费了更多的时间。还有一个额外的注意事项:修复通知通常会使代码在将来的更改中更加健壮,因此这是一个独立于性能的好主意。

在大多数情况下,我不会称之为“重大”改进,但运行不生成任何类型错误的代码自然比每隔一行生成堆栈跟踪的代码运行得更快

查看:有关可以对代码进行的次要优化的更多信息


根据我自己的经验,我发现95%的代码优化通常涉及如何使用数据库;不幸的是,它是用法语写的。。。但在这里(也许你会理解其中的一些部分):

以下是数字,帮助不懂法语的人:

  • 10k通知,启用了
    错误报告
    显示错误
    功能:5162.76毫秒
  • 相同,但显示错误已禁用:136.18毫秒
  • 相同,但也禁用了错误报告:117.79毫秒
  • 最后,在对代码进行修补,使其不再产生任何通知后:19.51毫秒
这意味着,是的,PHP代码在没有通知/警告/错误的情况下运行得更快,即使这些通知/警告/错误没有显示或报告


德里克·雷特汉斯(Derick Rethans)在这篇文章中说了同样的话:(引用):

原因3:速度慢(第二部分)

每当PHP生成错误时 消息在内部进行处理并 一直格式化到完全格式化 格式化的消息,可以 直接输出到浏览器。
仅在其显示之前
错误报告
设置已选中。 然而,这与 @-操作员专用。
错误 消息总是完全格式化的 在检查
错误报告之前,或
显示错误


嗯,我在发帖后意识到:这是我期末考试的第1000个答案。通知和警告是您最严重的错误,因为它们不会强迫您立即解决问题。缺少的数组索引很容易修复,但很少解决。就我个人而言,我把每一个通知/警告都当作是致命的。现在的问题是,错误检查是否不会比处理程序造成更多的延迟。我的意思是:测试生存等等。别误会我:我讨厌警告和通知。我最近得到了一个这样的项目,但上面的结果并不能说服我投资这个项目。