2008-09-09 69 views
6

如果您不熟悉內部部件,如何確定PHP代碼的性能後果?有沒有辦法找出你的代碼是如何執行的(除了簡單的加載測試)?我正在尋找內存使用情況,算法執行時間等問題。也許喬爾會說,「學習C,然後閱讀內部」,但我現在真的沒有時間學習C(儘管我真的很喜歡)。確定PHP代碼的性能結果

回答

4

使用Xdebug擴展來剖析PHP代碼。

3

如果你不熟悉的valgrind或類似的,然後添加到@Jordi本斯特的答案...

當你已經在Xdebug的剖析上,你可以在KCacheGrind打開傾倒輪廓文件或WinCacheGrind獲取代碼中花費時間的圖形視圖。

幸運的是Xdebug的文件還詳細解釋了這個問題,以及如何解釋結果:http://xdebug.org/docs/profiler

0

即使你熟悉的內部,你還是應該進行負載測試你的假設。我喜歡使用PEAR Benchmark包來比較不同的代碼。

如果你能隔離你的代碼,你可以保持你的負載測試簡單。一個典型的技術是運行每個選項幾次,看看哪一個更快。例如,如果你有一個類,你可以編寫一個測試用例,並通過它的步調並運行幾次。

+0

不要掛在這樣的微觀優化上。每個PHP Web應用程序都應該通過操作碼緩存運行,這使得微型優化非常多餘。加載測試已完成的應用程序要好得多,因爲您可以看到時間實際正在進行的時間並專注於該時間 – Polsonby 2008-09-23 21:40:13

0

可以使用低級別的方法,如堅持microtime()memory_get_usage()調用到代碼,也可以使用現有的配置解決方案之一:

  1. Xdebug(免費,開源)
  2. Zend Studio/Debugger分析(商業)
  3. Zend Server Code Tracing(商業)
  4. xhprof(免費,開源)

像往常一樣,商業工具具有很好的圖形用戶界面和漂亮的圖片,但花費金錢,免費的是免費的,但您可能需要投入更多時間。

此外,PHP CGI二進制與-T選項有一個基準模式,你很多嘗試運行php-cgi -T 100 yourscript.php做一個窮人的基準。

0

請參閱SD PHP Profiler瞭解如何使用圖形方式向您顯示PHP應用程序花費時間的工具。