2014-11-20 17 views
33

Ich erfuhr über flame graphs und finde sie faszinierend - aber ich konnte keinen nützlichen Hinweis finden, wie man sie für meine PHP-Skripte erzeugt. Wie kann ich die Daten sammeln und die Grafiken mit PHP erstellen?Wie erzeugt man Flammengraphen mit PHP?

+2

Brendan Gregg hat eine [* viel zu sagen *] (http://www.brendangregg.com/FlameGraphs/cpuflamegraphs) über Flammengraphen, wenn das hilft. Persönlich sind sie meiner Meinung nach überbewertet. Sie necken Sie mit hübschen farbigen Pixeln, aber Dinge, die Sie beheben können, um den Code zu beschleunigen, können sich leicht vor ihnen verstecken *) (http://stackoverflow.com/a/25870103/23771). –

+0

@MikeDunlavey: Ich interessiere mich auch nicht für hübsche Pixel, aber ich stimme auch nicht mit Ihrer Einschätzung von Flammengraphen als Augenschmaus überein. Sie machen * einige * (nicht alle!) Profiling-Aufgaben viel einfacher, was für mich in Ordnung ist. Wissen Sie, wie ich sie für PHP-Web-Apps erstellen kann? :) – johndodo

+0

Wenn ich sie machen wollte, würde ich eine Menge Stack-Samples sammeln (zur Wanduhrzeit, nicht zur CPU). Betrachte jedes Sample als eine lange Zeichenfolge, würde ich sie nur in lexikalischer Reihenfolge sortieren. Weisen Sie dann jeder einzelnen Funktion eine Farbe zu. Dann müssen Sie nur noch die sortierte Liste durchsuchen und jede Routine als farbiges Rechteck darstellen. Mein einziger Punkt ist, wenn Sie tatsächlich Geschwindigkeit brauchen, wenn sogar nur eine von fünf Beschleunigungen Ihrer Aufmerksamkeit entgeht, wird es verhindern, dass Sie die gewünschte Geschwindigkeit um einen großen Faktor erhalten. Denn nachdem Sie andere gereinigt haben, werden diejenigen, die Sie nicht bekommen, dominant. –

Antwort

6

Sie können Xdebug verwenden, um cachegrind-Profile Ihres PHP-Codes zu erstellen. Sie können einen Blick auf this project werfen, die xdebug die cachegrind Ausgabe mit PHP behandelt.

+1

Wenn ich es richtig verstehe, besteht die Idee darin, ein Werkzeug zu erstellen, das die Cachegrind-Ausgabe analysiert und in Flammenkurven anzeigt. Das hört sich machbar an ... – johndodo

+0

Es scheint nicht so, als gäbe es ein fertiges Tool, das mit PHP erstellt wurde, aber vielleicht kann es kcachegrind ... – n00dl3

+0

und um deine Frage zu beantworten, ja, das war's! – n00dl3

Verwandte Themen