如何解读我的zend Web应用程序的分析日志?

时间:2011-06-28 22:29:31

标签: php zend-framework profiler

我只是一个分析网络应用程序的新手。给个人资料日志文件我可以得到什么信息?我怎么知道我需要在哪里努力让我的应用程序更快 我有这个示例zend应用程序的索引页面配置文件,我不知道如何解释:

enter image description here

2 个答案:

答案 0 :(得分:1)

您需要的数字是总累计时间 - 忽略自己(自己)次数,通话次数和平均次数。

查找具有高累积时间的例程,其中有一些函数可以更少地完成。 特别是如果这些功能执行I / O.

另一种方法是简单地手动中断脚本,并多次记录调用堆栈。 如果仔细查看这些堆栈样本,您将在大多数情况下确切地看到哪些代码行正在耗尽。 More on that.

答案 1 :(得分:1)

要做的第一件事就是对结果进行排序。最大的瓶颈是需要时间最长的瓶颈。然后挖掘并查看该例程正在做什么,并尝试查找包含其他方法的循环。查看那些嵌套方法的hitcount(调用)以及它们花费的时间。

例如,假设MyFunc占用时间最长,你会看到它并且你看到它有一个循环做一些事情。查看循环,您可能会看到在循环内调用MyOtherFunc,再次查看表并查找MyOtherFunc。它被称为200次?看看你是否可以将MyOtherFunc移出循环(它是否需要更改变量作为输入?)。

例如,如果你看到伪代码,那么:

FOR (MyVar = 0 TO GetItems().Count) {
  print GetItems()[MyVar].Name;
}

如果GetItems返回100个项目,则方法GetItems将被调用200次。探测器将通过高hitcount指出这样的缺陷。所以你进入并将结果缓存在一个局部变量中:

var TempVar = GetItems();
FOR (MyVar = 0 TO TempVar.Count) {
  print TempVar[MyVar].Name;
}

现在它只会被调用一次。再次介绍并比较您的结果。

警告:一旦你掌握了它,分析就会让人上瘾!