2014-11-20 5 views
33

나는 flame graphs에 대해 알게되었고 매력적이었습니다. 그러나 PHP 스크립트를 생성하는 방법에 대한 유용한 참고 자료는 찾을 수 없었습니다. 어떻게하면 데이터를 수집하고 PHP를 사용하여 그래프를 생성 할 수 있습니까?PHP로 불꽃 그래프를 생성하는 방법은 무엇입니까?

+2

브렌든 그레그 (Brendan Gregg)는 불꽃 그래프에 대해 도움이된다면 [* lot to say *] (http://www.brendangregg.com/FlameGraphs/cpuflamegraphs)를 가지고 있습니다. 개인적으로, 제 의견으로는 그들은 과대 평가를 받았습니다. 그들은 꽤 착색 된 픽셀로 당신을 괴롭 히지만, 코드 속도를 높이기 위해 수정할 수있는 것들 [* 쉽게 숨길 수 있습니다 *] ​​(http://stackoverflow.com/a/25870103/23771). –

+0

@MikeDunlavey : 예쁜 픽셀은 신경 쓰지 않지만, 플레임 그래프를 눈짓으로 평가 한 것에도 동의하지 않습니다. 그들은 몇몇 * (전부는 아니지만!) 프로파일 링 작업을 훨씬 쉽게 만들어 주며, 그것은 나에게 잘됩니다. 그래서 PHP 웹 애플 리케이션을 위해 어떻게 만들 수 있는지 알고 있습니까? :) – johndodo

+0

내가 그들을 만들고 싶다면, 스택 샘플 (CPU가 아닌 벽시계)을 많이 수집 할 것입니다. 각 샘플을 긴 문자열로 생각하면, 어휘 순서로 정렬 할 것입니다. 그런 다음 각 개별 기능에 색상을 지정하십시오. 그런 다음 정렬 된 목록을 스캔하고 각 루틴을 컬러 사각형으로 렌더링하는 것입니다. 나의 유일한 요점은, 만약 당신이 실제로 속도가 필요하다면, 5 개의 스피드 업 중에서 오직 하나의 스피드 업만이 당신의주의를 탈출하게된다면, 그것은 당신이 원하는 속도를 큰 요인으로 얻는 것을 막을 것입니다. 왜냐하면 당신이 다른 것들을 깨끗이 씻기 시작하면, 당신이 얻지 못하는 것들이 지배적으로되기 때문입니다. –

답변

6

Xdebug을 사용하면 PHP 코드의 캐시 그라인드 프로필을 만들 수 있습니다. PHP를 사용하여 xdebug의 cachegrind 출력을 처리하는 this project을 살펴볼 수 있습니다.

+1

제가 올바르게 이해한다면, 아이디어는 cachegrind 출력을 파싱하고 플레임 그래프에 표시하는 도구를 만드는 것입니다. 그건 들리 겠지만 ... – johndodo

+0

PHP로 작성된 바로 사용할 수있는 도구가있는 것 같지 않지만, 아마도 kcachegrind가 그것을 할 수 있습니다 ... – n00dl3

+0

그리고 네 질문에 대답 해, 네! – n00dl3

관련 문제