2009-10-11 25 views
3

我有一個用PHP編寫的web應用程序。它使用MySQL進行數據存儲。今天,我決定對其進行簡介以找出代碼中的瓶頸,並找出其中哪些部分運行速度慢於其他部分。通常的東西。我做了很多工作,現在我的桌面上的加載時間不到0.05秒。剖析PHP應用程序,50%的時間忙於構建類 - 是否可以?

但現在我的分析器告訴我,這段時間有一半時間我的應用程序正忙於構建類。 Front控制器需要ConfigDatabaseUser類,他們有自己的東西,在__construct()做,那麼它加載Page控制器,它加載CacheView,之後它激發的Pagemain()方法。所有這些東西需要佔總工作時間的50%。另外50%用於查詢db,查詢結果並在View中輸出。

問題是:這是好嗎? 「建設50%」的東西?這是否意味着我優化了我的應用程序?我已經被告知,Web應用中最耗時的操作是數據庫查詢。我優化了它們,應用了一些緩存,現在它們完全處於控制之下。而且我實際上對如何優化課堂建設毫無頭緒。我應該嘗試優化這些方法,還是讓它們保持不變?

回答

3

我不會擔心太多;如果你在完成呈現頁面之前沒有對數據做很多工作,大部分時間運行它將花費在你的類的構造函數中,但這應該或多或少地保持不變的懲罰。如果你的控制器中有很多邏輯運行,並且你的分析器仍然告訴你它花費了大量的時間來開始你的應用程序,那麼你可能要考慮優化;請記住,過早優化是一件非常糟糕的事情,除非應用程序的執行時間足夠慢才能被視爲錯誤,否則開發新功能或修復錯誤的時間會更長。

+0

是的,這個建造時間似乎或多或少是恆定的,是的。好點。 – n1313 2009-10-11 12:54:08

2

它是構造函數還是構造調用?您是否在使用工具來查看這些50%的組成成分?由於大部分工作可能會調用其他功能。

+0

我不確定「構建功能」是什麼意思。例如,'__construct()'方法中的User類獲取'Database'和'Config'類的實例,定義一些默認值並試圖找出當前用戶是否登錄了註冊用戶或某個匿名兄弟(1查詢到數據庫)。所有這些東西需要0.02秒,或所有加載時間的〜20%。 – n1313 2009-10-11 12:21:10

+0

我的意思是這個構造函數佔用了50%的處理時間。什麼是單個組件的時間?構造函數中的內容需要多長時間。 – 2009-10-11 16:14:32

2

我曾經在Drupal站點中集成過一些Web服務。

因此,我最終做了一些分析,只是發現Drupal bootstrap使用了90%的時間,而我的代碼佔用了剩下的10%。 Drupal的設計很糟糕:),所以它加載了很多很多東西,它並不真正使用。

我認爲這取決於你的決定在你的情況。

相關問題