klaus: Laufzeitmessung /CPU-Zeit

Beitrag lesen

Hie flotte,

Zeitmessungen einfach:
   my($starttime) = time;
   &machwas();
   my($endtime) = time ;
   print 'Das hat jetzt' . ($endtime-starttime) . 'sekunden gedauert!';

Pro:
   + Alles eingebaut.
Contra:
   -  recht ungenau, da nur Sekunden-Auflösung.

Zeitmessung genauer:
   use Time::HiRes qw( gettimeofday tv_interval );
   my($starttime) = [gettimeofday];
   &machwas();
   print 'Das hat jetzt' . tv_interval ( starttime) . 'sekunden gedauert!';

Pro:
   + arbeitet mit Millisekunden-Auflösung.
Contra:
   -  Modul mit C-Anteil. muß daher installiert werden.

Der Nachteil aller Lösungen ist m.E., daß diese Messungen nicht wirklich die CPU-Zeit ermitteln. Du kannst nur sagen, wie lange es gelaufen ist.
Ich weiß ja nicht, wie der Provider CPU-Zeit definiert, aber normalerweise ist das jene Zeit, welche das Programm wirklich die CPU benötigte, und nicht die Dauer der Laufzeit. (Multitasking)

so, jetzt hab ich es, glaub ich, gefunden.
   use Benchmark;
   $x=3;
   cmpthese(0,{hier_muß_irgendwie_Dein_Code_rein});

Habs noch nie ausprobiert. Ich bin grade drübergestolpert. aber das gibt dir, wenn Du's richtig gemacht hast, auch die CPU-Zeit aus.

Dabei mußt Du Dir bewußt sein, daß ein Benchmark nur dann Sinn macht, wenn Du ungefähr die Gleichen Bedingungen hast, wie auf dem Zielsystem. Für Dich würde eventuell auch genügen, wenn Du schlechtere Bedingungen schaffen kannst, da Du ja nur wissen willst, ob's nicht zu lange dauert. Gültige Aussagen kannst Du aber nur machen, wenn Du auf dem Zielsystem bist.

Viel spaß noch
   Klaus