Welcher Profiler kann dynamisch geladene C Librarys verarbeiten?
-
hi,
sagt mal, wie messe ich eig. richtig meine software durch? es geht da haupsächlich um c. ich compiliere unter linux mit gcc und den flags -g -pg. dann wird eine gmon.out erzeugt, dann jag ich die durch gprof main | less. leider scheint der output nicht zu stimmen, man weiß ja ungefähr, wo die meiste zeit verloren geht, leider sind bei mir die funktionen dann nicht ganz oben... ich verstehs ja auch nicht!
gibts evtl. andere open source tools die ich mal austesten kann? evtl. auch kostenlose closed source
-
Der Profiler irrt sich nicht. Entweder verstehst du die Ausgabe nicht oder du irrst dich mit deinen Angnahmen. Gerade wegen letzterem verwendet man doch Profiler.
Ich mag auch gerne die Profilingoption von valgrind (bevorzugtes Auswerteprogramm: kchachegrind), weil man dann auch besser versteht, warum eine Codeabschnitt langsam ist. Insbesondere findet man damit ansonsten schwer zu findende Performancelöcher wie Cachemisses oder schlechte Branchpredictions.
Für Linux kannst du als Privatentwickler auch den Intel-Compiler kostenlos installieren. Ich weiß nicht auswendig, ob in der Kostenlosversion auch deren Profiler drin ist, aber falls er es ist: Der bietet auf den ersten Blick erst einmal das was valgrind bietet mit einem schon fast zur Unbenutzbarkeit überladenen Klickibuntinterface. Es spielt aber seine Stärken aus, wenn du parallel arbeitende Programme hast, dann kannst du recht genau sehen, wo es an Parallelität mangelt. Und wenn du speziell auf Intelprozessoren abzielst, bietet es dir auch sehr stark ins Detail gehende Informationen. Für mich waren letztere aber bisher zu technisch, um da etwas nützliches rauszulesen. Wenn du weiter vorne in der
MikroNanooptimierung bist, dann kannst du vielleicht was damit anfangen.P.S.: Und noch eine Nachfrage: Die Optimierungen hast du aber angeschaltet gelassen? Sonst hast du unoptimierten Code durchgemessen und es wäre kein Wunder, wenn da etwas unerwartetes rauskommt.
-
ein request dauert 80ms, wenn ich eine funktion auskommentiere sinds 15ms.
in der funktion wird popen aufgerufen, welches ein externes php script startet, war keine kunst die zu finden
ich werd noch mal bischen 'nachforschen' und mir den gprof output genauer anschauen, vllt. hab ich was übersehen, kann ja mal vorkommen
@edit: -O2 hab ich natürlich angehängt
-
ach, die funktion ist in einer library und wird per dlopen eingeladen... daher erscheint die nicht in der ausgabe
also neue fragestellung... welcher profiler kann dynamisch geladene librarys verarbeiten
-
SeppJ schrieb:
Ich mag auch gerne die Profilingoption von valgrind (bevorzugtes Auswerteprogramm: kchachegrind)
also der ist schon nicht schlecht, das reicht mir fürs erste danke!