我只是一个分析网络应用程序的新手。给个人资料日志文件我可以得到什么信息?我怎么知道我需要在哪里努力让我的应用程序更快 我有这个示例zend应用程序的索引页面配置文件,我不知道如何解释:
答案 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;
}
现在它只会被调用一次。再次介绍并比较您的结果。
警告:一旦你掌握了它,分析就会让人上瘾!