2014-11-20 12 views
33

Tôi đã tìm hiểu về flame graphs và thấy chúng hấp dẫn - tuy nhiên, tôi không thể tìm thấy tham chiếu hữu ích về cách tạo chúng cho (các) tập lệnh PHP của tôi. Làm thế nào tôi có thể thu thập dữ liệu và tạo ra các đồ thị bằng cách sử dụng PHP?Làm thế nào để tạo biểu đồ ngọn lửa bằng PHP?

+2

Brendan Gregg có [* lô để nói *] (http://www.brendangregg.com/FlameGraphs/cpuflamegraphs) về biểu đồ ngọn lửa, nếu điều đó có ích. Cá nhân, theo ý kiến ​​của tôi, họ bị đánh giá cao. Họ trêu chọc bạn với các điểm ảnh màu đẹp, nhưng những thứ bạn có thể sửa để tăng tốc mã [* có thể dễ dàng ẩn chúng *] (http://stackoverflow.com/a/25870103/23771). –

+0

@MikeDunlavey: Tôi cũng không quan tâm đến các pixel đẹp, nhưng tôi cũng không đồng ý với đánh giá của bạn về biểu đồ ngọn lửa như mắt kẹo. Họ làm cho * một số * (không phải tất cả!) Hồ sơ nhiệm vụ dễ dàng hơn nhiều, đó là tốt của tôi. Vì vậy, bạn có biết làm thế nào tôi có thể làm cho chúng cho các ứng dụng web PHP? :) – johndodo

+0

Nếu tôi muốn tạo ra chúng, tôi sẽ thu thập rất nhiều mẫu ngăn xếp (trên đồng hồ treo tường, không phải CPU). Xét mỗi mẫu như một chuỗi dài, tôi sẽ sắp xếp chúng theo thứ tự từ vựng. Sau đó gán màu cho từng chức năng riêng lẻ. Sau đó, nó chỉ là một vấn đề của quét thông qua danh sách được sắp xếp và vẽ từng thói quen như là một hình chữ nhật màu. Điểm duy nhất của tôi là, nếu bạn thực sự cần tốc độ, nếu ngay cả chỉ có một trong năm tăng tốc thoát khỏi sự chú ý của bạn, nó sẽ ngăn chặn nhận được tốc độ bạn muốn bởi một yếu tố lớn. Bởi vì sau khi bạn làm sạch những cái khác, những cái bạn không trở nên thống trị. –

Trả lời

6

Bạn có thể sử dụng Xdebug để tạo cấu hình cachegrind của mã php. Bạn có thể xem this project để xử lý đầu ra bộ nhớ đệm của xdebug bằng cách sử dụng php.

+1

Nếu tôi hiểu chính xác, ý tưởng là xây dựng một công cụ phân tích đầu ra của bộ nhớ đệm và hiển thị nó trong biểu đồ ngọn lửa? Điều đó nghe có vẻ dễ dàng ... – johndodo

+0

Nó dường như không có một công cụ sẵn sàng để sử dụng được xây dựng với PHP, nhưng có thể kcachegrind có thể làm điều đó ... – n00dl3

+0

và để trả lời câu hỏi của bạn, có, đó là nó! – n00dl3

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