2012-01-10 15 views
6

Hiện tại, tôi đang sử dụng xdebug profiler & KCacheGrind. Nhưng định dạng GallGrind không lưu trữ đầy đủ cuộc gọi dấu vết, chỉ là dấu vết cuộc gọi con mẹ (nhìn vào Kcachegrind/callgrind is inaccurate for dispatcher functions? cho những gì tôi đang nói về.)Một 'profiler với visualization' cho PHP với `đầy đủ backtrace visualization`?

Có một hồ sơ với hình dung với đầy đủ hình dung backtrace sẵn cho PHP?

Tôi đã nhìn

  • PHP Quick Profiler: Nhưng, Nó đòi hỏi quá nhiều mã để được thêm vào và không trực quan.
  • phpCallGraph: Phiên bản mới nhất của phiên bản này đã được sửa đổi vào 2009-08-06 (ref).
+0

Cũng muốn biết câu trả lời. Tôi sử dụng cùng một công cụ hiện tại và họ khao khát cải tiến. –

+1

@ Mr-sk đồng ý. Hãy xem http://particletree.com/features/php-quick-profiler/. Nhưng không có công cụ trực quan. – ThinkingMonkey

+0

Thú vị, thú vị, sẽ cho nó một cái nhìn. –

Trả lời

3

Tôi phải thực hiện một số hồ sơ PHP chính cho một dự án trước đây vài tháng trước.

Tùy chọn tốt nhất mà tôi có thể tìm thấy là xhprof của facebook với xhprof-ui.

Tìm hiểu về làm thế nào để cài đặt cả hai trong số họ ở đây:

http://blog.preinheimer.com/index.php?/archives/355-A-GUI-for-XHProf.html

Một số ưu:

  • dễ dàng để sử dụng giao diện
  • cơ sở dữ liệu backend để lưu phiên profiling trước
  • đẹp callgraphs
+0

+1 cho đề xuất xhprof, mặc dù nó hơi khác một chút so với sử dụng hơn profiler của xdebug –

+0

Nhưng nó dường như không có bất kỳ công cụ trực quan nào cho calltrace. 1 cho thấy nó mặc dù. – ThinkingMonkey

+0

_I được sửa chữa_. Xprof trông tuyệt vời. – ThinkingMonkey

1

Nếu bạn chỉ muốn nhìn vào đầu ra profiler, đó là một điều. Nếu bạn đang cố gắng tối ưu hóa mã của mình, đừng quên khoảng this method. Tôi biết bạn có thể làm điều đó trong xdebug.

Nó dựa trên một ý tưởng rất đơn giản. Giả sử chương trình của bạn đang làm nhiều hơn mức cần thiết để có thể tăng tốc. Trong thực tế giả sử, vì lợi ích của đối số, nó đang làm gấp 9 lần so với nhu cầu, vì vậy hoàn toàn mất 1 giây, nó thực sự là 10. 9 giây công việc không cần thiết đó có thể hoặc không được trộn lẫn triệt để , như đường và bột mì.

OK, trong 10 giây đó, bạn chỉ cần nhấn^C để tạm dừng và sau đó bạn xem kỹ để xem nó đang làm gì vào lúc đó.

Xác suất mà bạn bắt được khi làm điều lãng phí là gì? Trên thực tế, rất khó bạn không thể không bắt nó làm điều lãng phí.

Nếu bạn không chắc chắn, chỉ cần lặp lại.

Sự lãng phí không cần phải lớn như vậy. Trên thực tế, nếu bạn tiếp tục tạm dừng nó như vậy, ngay khi bạn thấy nó hoạt động trên nhiều hơn một sự kiện, nếu đó là điều bạn có thể thoát khỏi, bạn sẽ được tăng tốc tốt đẹp.

Ví dụ, nếu bạn tạm dừng nó 5 lần, và bạn thấy nó làm điều gì đó không thực sự phải làm trên 2 trong những dịp đó, bạn có thể tiết kiệm được bao nhiêu? Bạn không biết chính xác, nhưng nó sẽ ở đâu đó khoảng 40%. Nó có thể nhỏ đến 20%. Nó có thể dễ dàng lớn tới 60%. Vì vậy, bạn không biết nó sẽ tiết kiệm được bao nhiêu, nhưng bạn không vứt bỏ một cái nugget vàng chỉ vì bạn không chắc nó nặng bao nhiêu.

Cuối cùng, không có vấn đề gì với trình hồ sơ có thể thấy rằng điều này sẽ không xảy ra. Trò chuyện không đúng.

+0

:) cười vì, đây là những gì tôi đã làm từ khi tôi bắt đầu lập trình. Đây là lần đầu tiên của tôi với một hồ sơ. – ThinkingMonkey

+0

@Think: Heh. Vui mừng khi nghe nó. Nếu bạn có may mắn hơn với một hồ sơ, hãy cho tôi biết. –

+0

Không có sự trợ giúp đặc biệt nào từ profiler. Tuy nhiên, (tôi rất vắng mặt và đôi khi nhìn thấy cảnh giác) Nó đã giúp tôi nhận thấy một số cuộc gọi chức năng mà không cần thiết. Và tôi đã bỏ lỡ để loại bỏ khi tôi đã thực hiện một tối ưu hóa (để sử dụng bộ nhớ cache). – ThinkingMonkey

Các vấn đề liên quan