2011-06-28 22 views
3

我只是一個分析web應用程序的新手。給出配置文件日誌文件我可以得到什麼信息?以及如何知道我需要在哪些方面努力才能使我的應用程序更快。
我有這個樣本的Zend應用程序的索引頁面的個人資料,我不知道如何解釋:如何解釋我的zend web應用程序的分析日誌?

enter image description here

+0

我懷疑這個問題可能對SO太開放了。但是,因爲我知道** I **會從這裏得到很好的答案。 ;-) –

+0

除了解釋如何設置分析數據外,您是否知道解釋分析數據的任何書籍或資源? –

+0

不幸的是,我不是。 ;-( –

回答

1

您所需要的數量是總累計時間 - 忽略自己(自己的)時間,通話次數,和平均時間。

找到一個具有高累計時間的例程,其中有一些函數可以做得更少。 特別是如果這些功能做I/O。

另一種方法是簡單地手動中斷腳本並多次記錄調用堆棧。 如果仔細查看這些堆棧樣本,您將會看到大部分時間內哪些代碼行正在耗盡。 More on that.

1

首先要做的事情就是對結果進行排序。最大的瓶頸是時間最長的瓶頸。然後挖掘並查看該例程正在做什麼,並嘗試查找包含其他方法的循環。看看這些嵌套方法的hitcount(調用)和他們花費的時間。例如,讓我們說MyFunc時間最長,你看看它,你看它有一個循環做一些事情。查看循環中你可能會看到MyOtherFunc在循環中被調用,再次查看錶並查找MyOtherFunc。它被稱爲200次?看看你是否可以將MyOtherFunc移出循環(是否需要一個變化的變量作爲輸入?)。

例如,在僞代碼,如果你看到這一點:

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

如果GetItems返回100個項目,方法GetItems將被調用200次。分析人員會將這種缺陷指向高端客戶。所以你進去並將結果緩存在局部變量中:

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

現在它只會被調用一次。再次剖析並比較您的結果。

警告:一旦你掌握了它,分析就會變得令人上癮!