2012-06-27 113 views
1

嗯,我明白什麼樣的工具可以用於優化,性能分析等......現在我知道了我所有的瓶頸。但我無法無限優化它們。我的意思是 ?例如,我有A點作爲我的主要瓶頸,我應用了優化,之後CPU時間,內存時間等變得更小,但與整個項目相關仍然是瓶頸。我的意思是說,任何項目中的每一次都有瓶頸,那麼當我應該停止優化時,哪裏是最後一點呢?PHP代碼優化(重構)

+2

當你滿意的時候 –

+1

你總是可以加快速度,以便在彙編器中調整代碼。什麼時候停止取決於你願意投資多少時間,這是可用時間的函數,需要的表現以及何時「感覺足夠好」。 – deceze

+0

@deceze同意超過它可能是 – user1016265

回答

1

假設您發現一個「瓶頸」,當您修復它時,可節省30%的時間。 例如時間從10秒降至7秒。

然後假設你找到另一個,當你修復它時,可以節省30%的7s或2.1s。 這將時間縮短到4.9秒。

注意幾件事情。

  • 的第二個問題是原來的10秒的只有21%,所以原本這是一個-大少的問題,但修復的第一個問題之後,第二個得到更大,爲百分比。

  • 將其視爲加速比。解決第一個問題使您的加速比爲10/7或1.43x。解決第二個問題給你的比例是7/4.9或1.43x。總加速比爲10/7乘以7/4.9,等於10/4.9或2.04x。您的節目速度提高了一倍以上。

  • 這兩個問題佔了原來10%的30%和21%。如果還有兩個,分別是14.7%和10.3%,他們在配置文件中看起來會很小。但是如果你解決了所有這四個問題,你就可以將程序的速度提高四倍!如果你錯過了其中的任何一個,你就不會。

就是這樣。直到你真正達到最低點,你才能夠使程序更快,而最初似乎微不足道的問題後來變得有價值。 你得到的最終加速比可以讓你感到驚訝。

不是所有的分析器都能找到所有問題。 如果問題之一是你的分析器找不到, 你會得到一個你認爲你儘可能優化的點,但是你沒有。

如果你想超越這一點,你需要一個分析技術,將發現問題。 Here's how I do it.

2

如果您的代碼的某個部分導致瓶頸,或許最好的做法是退後一步,看看整個圖片,我的意思是您的整體設計。有時最好的辦法擺脫瓶頸是不可能修復的一個不可能的事情是重新思考你的設計模式。

這裏有一些很好的來源

  1. http://en.wikipedia.org/wiki/Software_design_pattern
  2. http://www.phptechi.com/php-design-patterns.html
+0

謝謝你的回答,我仍然認爲這是不可能擺脫瓶頸。主要點使他們更小(更短)等我是對的? – user1016265

+0

重點是計劃權衡,正如另一位用戶在下面解釋的,在這一點上可以接受瓶頸?如果它是用戶互動的高度參與部分,那麼它應該平滑快速地進行,如果它是一次性屏幕顯示「LOADING」,那麼將所有重大計算和媒體大量交易放在該階段。再次,這可以歸結爲在跳入代碼之前花更多時間設計應用程序。 – serdarsenay

1

在我的看法,這取決於需求。如果用戶正在等待幾秒鐘的加載頁面,那沒關係。但如果用戶在聊天時等待幾秒鐘,則需要進行優化。當我登錄谷歌,它需要超過5秒(很長),但之後,它很快。但是,如果聊天時需要相同的內容,那麼我會更喜歡其他電子郵件ID。通常,在mysql,web服務,循環等中需要優化。當在谷歌圖像上搜索時有很多圖像需要時間。用戶可以等待它。轉到頁面,看看你的自我,在加載頁面時的感受。是否很長?如果是,那麼你需要優化。