我刚开始使用 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对象以完全相同的方式构建,没有任何问题。所有这些都位于相同的路径内。
答案 0 :(得分:0)
这听起来确实很奇怪。绝对值得追求,虽然如果没有看到实际的代码就很难确定。单个require_once()
的总节目时间的12%确实听起来非常过分。
但是这里有一些关于可能的调查途径的想法:
require_once()
保存已包含的文件的查找表,因此可能会减慢必须引用该查找表的速度。
如果这是原因,您可以尽可能使用require()
而不是require_once()
解决此问题。
也许这是路径查找?你是否包含一个带文件名的路径?如果没有,它将在许多地方检查以找到该文件;也许它不是它看起来的第一个位置,它可能需要更长的时间来找到它之前可以包含它的文件。 如果这是原因,您可以通过更具体地了解代码中的路径来解决它。
希望有所帮助。我很想知道这是怎么回事。
哦,顺便说一下 - 如果你的代码中最大的问题区域是require_once()
,那么听起来你的代码做得很好!我梦想有一天require_once()
甚至出现在我的个人资料报告中,更不用说有显着效果了。