Forum: Compiler & IDEs Gprof Output nicht deterministisch


von Patrick L. (crashdemon)


Lesenswert?

Hallo Zusammen,

ich spiele gerade eine bisschen mit dem GNU Profiler Gprof herum und 
dabei ist mir augefallen das der Output Report nicht deterministisch 
ist. Woher kommt das?

Ich beschreib mal hier wie ich vorgehe:

1. C-Programm geschrieben und mit GCC mit der option für Profiling 
gebaut
2. C-Programm ausgeführt und von Hand abgebrochen (Windows)
3. gmon.out wird erzeugt und mittels Gprof ein Flat-Profile, etc... 
erzeugt.
4. Report weg gespeichert
5. Programm nochmal laufen lassen. Von Hand abgebrochen. Report erzeugt.
6. Report mit dem vorherigen verglichen.

Gerade bei den prozentualen werten gibt es teilweise deutliche 
Abweichung zwischen den läufen?! Wei kann man dass erklären? Kriegt man 
das in den Griff?

Ich wollte den Profiler eigentlich dazu benutzen um Funktionen zu 
erkennen die besonders viel Laufzeit in Anspruch nehmen um diese gezielt 
zu optimieren.

von Thomas W. (goaty)


Lesenswert?

- Unterschiedliche Bedingungen des Programms beim ersten und zweiten 
Lauf
- Unterschiedliche Laufzeit (per Hand abgebrochen)
- Sampling based ! Die Meßwerte sind nie exakt gleich.

von Patrick L. (crashdemon)


Lesenswert?

Ich hatte das Programm auch schonmal so angepasst, dass es nur ca. 100 
mal läuft und sich dann auch von selbst terminiert. Aber auch dann kommt 
es zu unterschiedlichen Ergebnissen. Woran kann das liegen?

von Thomas W. (goaty)


Lesenswert?


von Blechbieger (Gast)


Lesenswert?

Cache-Effekte könnten noch eine Rolle spielen, z. B. wenn parallel 
laufende Programme deins dauernd aus dem Cache verdrängen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.