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.
- Unterschiedliche Bedingungen des Programms beim ersten und zweiten Lauf - Unterschiedliche Laufzeit (per Hand abgebrochen) - Sampling based ! Die Meßwerte sind nie exakt gleich.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.