Tool zur "Geschwindigkeitsmessung" eines Programms
-
Hallo,
gibt es bestimmte Tools, die messen, wie lange ein Programm braucht, bis es ausgeführt ist? Oder muss ich das irgendwie selbst timen?
Da ganze bräuchte ich, um herauszufinden, ob mit Assembler optimierte Codestellen die Geschwindigkeit relevant verändernDanke schonmal im Voraus
Johannes
-
Gibt es, nennt sich Profiler.
Für hilfreiche Links müsstest du aber schon ein paar mehr Infos nennen, z.B. das Betriebssystem, die CPU und den Compiler. Ansonsten kann ich nur auf Google verweisen.
-
Johannes Maier schrieb:
Hallo,
gibt es bestimmte Tools, die messen, wie lange ein Programm braucht, bis es ausgeführt ist? Oder muss ich das irgendwie selbst timen?
Da ganze bräuchte ich, um herauszufinden, ob mit Assembler optimierte Codestellen die Geschwindigkeit relevant verändernDanke schonmal im Voraus
Johannesauf linux das programm time.
auf dos/win leicht nachzubasteln mit
start=clock(); system(otherProg); stop=clock(); cout<<stop-start<<endl;
was willste messen? ob die gesamtlaufzeit durch ein paar stellen assembler sichtbar verändert werden? dann gehts mit clock() oder gar time(). normalerweise erkennt man aber keine änderung.
oder willste die asm-stellen ausmessen? dann nimm rdtsc und kannst taktgenau messen. normalerweise erkennste keine große änderung.:)das gemeine am messen eines programmablaufs incl. starten und stoppen ist, dass so viele andere sachen zugleich passieren. musst schon laufzeiten von vielen sekunden haben, um irgendwo mal unter ein prozent abweichung zwischen zwei messungen des gleichen zu kommen.
-
OK vielen Dank für die Tipps
Ich werd mich mal an das Beispiel machen und auch nach den Profilern mal suchen
Hab WinXP Pro + VC++6 + 2400+ Prozessor und 768 MB RAM
-
oh, Assembleroptimierung zu nutzen ohne vorher einen Profiler eingesetzt zu haben bringt oft weniger als man denkt. Nimm dir einen Profiler, wie zB. gprof oder was dir so google ausspuckt (die meisten Profiler für VCx dürften aber was kosten) und lass dir anzeigen, welche Funktionen am meisten Zeit verbrauchen. Ansonsten wirst du leicht Opfer der 80:20-Regel! Was es gebracht hat, siehst du dann auch gleich.
-
80:20 regel ?
-
DEvent schrieb:
80:20 regel ?
Oder auch 90:10
80% der Zeit werden von 20% des Codes verbraucht.
-
kingruedi schrieb:
oh, Assembleroptimierung zu nutzen ohne vorher einen Profiler eingesetzt zu haben bringt oft weniger als man denkt. Nimm dir einen Profiler, wie zB. gprof oder was dir so google ausspuckt (die meisten Profiler für VCx dürften aber was kosten) und lass dir anzeigen, welche Funktionen am meisten Zeit verbrauchen. Ansonsten wirst du leicht Opfer der 80:20-Regel! Was es gebracht hat, siehst du dann auch gleich.
bei vc6 pro/enterprise is ein profiler dabei
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvc60/html/optcode.asp
-
Zu Glowcode:
www.glowcode.com
gibts ne 21 Tage Testversion.mfg JJ
-
Für AMD-CPUs gibt es den AMD CodeAnalyst irgendwo auf www.amd.com.