3

我刚开始使用xdebug来分析我的应用程序,并立即注意到结果中有一些奇怪的地方。显示其中一项require_once功能需要大约 12% 的处理时间。在整个应用程序中还有很多其他调用require_once,它们都占用不到 1% 的处理时间。

表现不佳的require_once是包含一个与其他任何文件没有显着差异或更大的文件,所以我不确定是什么导致了问题。有没有其他人经历过这样的事情?

编辑:想提供更多信息。我正在使用 XAMPP 在 Windows 上进行分析。通常,该应用程序在 unix 机器上运行。我没有一种简单的方法可以将 xdebug 安装到盒子上,因此尝试以这种方式比较结果对我来说可能是不可行的。

最后一个编辑:这是一个代码的想法,以防万一(出于标准的 CYA 法律原因,故意含糊不清):

此类是包含速度较慢的类(test.inc):

require_once('/xx/yy/zz/dao/basedao.inc');
require_once('/xx/yy/zz/vo/test.inc');

class TestDAO extends BaseDAO {
  // bunch of code to handle database records and return VO objects

这是包含的文件:

require_once('/xx/yy/zz/vo/basevo.inc');

class Test extends BaseVO {
  // bunch of properties, getters/setters, that kinda stuff

我有很多其他的 VO/DAO 对象,它们以完全相同的方式构建,没有任何问题。所有都位于相同的各自路径内。

4

1 回答 1

0

这听起来确实很奇怪。绝对值得追求,尽管如果没有看到实际代码就很难确定它。单曲总节目时间的 12%require_once()听起来确实很多余。

但这里有一些关于可能的调查途径的想法:

  1. require_once()保留已包含文件的查找表,因此可能会减慢必须参考该查找表的速度。如果这是原因,您可以通过使用require()而不是require_once()尽可能地解决它。

  2. 也许是路径查找?您是否包含带有文件名的路径?如果没有,它将在许多地方检查以查找文件;也许它不是它看起来的第一个地方,它需要更长的时间才能找到文件才能包含它。如果这是原因,您可以通过更具体地了解代码中的路径来解决它。

希望有帮助。很想听听这是怎么回事。

哦,顺便说一句——如果你的代码中最大的问题是require_once(),那么听起来你的代码做得很好!我梦想着这一天require_once()甚至出现在我的分析器报告中,更不用说产生重大影响了。

于 2012-07-16T20:54:26.130 回答