【问题标题】:How to understand qcachegrind results?如何理解 qcachegrind 结果?
【发布时间】:2017-03-11 22:46:22
【问题描述】:

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

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

【问题讨论】:

    标签: php profiling xdebug qcachegrind


    【解决方案1】:

    “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 time 将与它不调用任何函数相同。而 c self 大约为 0 并且包含时间大约等于 d 包含时间。

    查看您的 qcachegrind,您的代码在 PDO 调用中花费了大量时间。与 SQL 查询相关的内容。您还希望捕获您的 SQL 查询并分析它们以了解它们的运行情况。

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

    【讨论】:

    • 好的,所以“self”是函数的执行时间,其中没有任何包含,“include”是函数执行的整个时间(包括文件、函数等),对吧?
    • 是的。我已根据您的建议更新了答案以使其清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 2016-03-19
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多