如何理解qcachegrind结果?

How to understand qcachegrind results?

我试图分析我的 php 应用程序,但无法理解 qcachegrind 中的指标。跟随截图:

当然是它的函数调用了。但是什么意思列包括。和自己?我在这里应该如何识别某些方法需要重构?

"self" 是在函数内部没有任何包含(和其他函数调用)的情况下执行函数的时间,"include" 是函数执行的整个时间(包含文件、函数等)。举个例子:

function a()
{
    b();
    c();
}

function b() { // some code }
function c()
{  
   d()
}
function d() { // some code }

函数a的自身时间将近似为零,但由于它调用了b和c,它的包含时间将是最高的并且包含a、b和c的时间。类似地 b self 和 include 时间将是相同的,因为它没有调用任何函数。而 c self 将大约为 0,包括时间大约等于 d 包括时间。

查看您的 qcachegrind,您的代码在 PDO 调用中花费了大量时间。与 SQL 查询相关的内容。您还想捕获 SQL 查询并分析它们以查看它们的表现。

输出中同样有趣的是函数被调用的次数。一个函数在性能方面可能是高效的,但如果调用太多次,它就会累加起来。检查代码是否进行了太多 SQL 查询。