Seite 1 von 1

Laufzeit eines Programms über py-script bestimmen

Verfasst: Mittwoch 15. August 2007, 17:48
von Mati
Hallo,

ich habe 2 C++ Programme und würde gerne mittels eine python-skripts die exakte laufzeit für einen bestimmen input messen um zu sagen welches programm von den beiden schneller ist.

Ich programmiere unter Linux - da gibt es den time befehl. Gibt es etwas ähnliches in python auch?

Meine Grundsätzliche Idee wäre:
in einer schleife ca. 100 mal jedes programm laufen zu lassen, die zeiten zu speichern, 16% (Normalverteilung) der besten und schlechtesten Zeiten zu löschen und anschließend den wert zu mitteln. Man könnte auch auf 1000 gehen.

ist mein vorgehen falsch oder gar unmöglich? Ich meine zeitmessungen sind ja immer abhängig von den darunterliegenden Unterbrechungen des OS bzw. den prozessen etc....

Danke für Mithilfe

Verfasst: Mittwoch 15. August 2007, 18:15
von schlangenbeschwörer
Hallo!
Was sind das denn für Programme? Willst du sie nur mit Python starten, oder irgendwie einbauen?
Kannst dir ja mal timeit angucken. Vlt. ne Funktion bauen, die einfach das entsprechende c++ Programm laufen lässt (mit os.system oder so, damit python erst nach beendigung des Programms weiterläuft).
Wenn du nur den Vergleich brauchst, und nicht die absoluten Zeiten, kannst du dir die Schleife sparen (s. doc/link).

Hoffe, das hilft dir etwas weiter.

Verfasst: Mittwoch 15. August 2007, 19:03
von Mati
naja - c++ programme - eins habe ich selbst geschrieben (ca. 3000 Zeilen) und eins ist fremt (5000 Zeilen).

also unter linux kann mittels time befehl die zeit aus der konsole bekommen.
also: $time ./my_prog
jetzt wollte ich einfach ein skript schreiben und dort sowas wie:
exec my_prog
ausführen 100mal und die Zeit messen und als output mir die gemittelte zeit meines programms ausgeben lassen.

Verfasst: Mittwoch 15. August 2007, 19:24
von schlangenbeschwörer
Probiers doch einfach mal mit os.system. Kannst du deine Zeitmessung damit nicht einfach inner schleife aufrufen? Also nur die Wiederholung per Python regeln?