User since
2003-08-14
87
Artikel
BenutzerIn
Hi Ihr,
wie kann ich eigentlich prüfen, wie schnell mein Script auf dem Server arbeitet?
Möchte gerne meinen Code optimieren und testen, ob das Script mit ein paar Änderungen schneller läuft.
Wie kann ich das anstellen, gibts da vielleicht nen shell-befehl ist was ähnliches? vielleicht auch ein extrascript dafür?
viele grüße & vielen dank
Steffen
User since
2003-08-04
5246
Artikel
ModeratorIn
dafuer gibt's das Modul benchmark, z.B.
am anfang vom Code oder vor der Aenderung:
use Benchmark;
my $benchmarkStart = Benchmark->new();
und am Ende (oder nach der Aenderung):
my $benchmarkEnd = Benchmark->new();
my $diff = Benchmark::timediff($benchmarkEnd, $benchmarkStart);
my $str = Benchmark::timestr($diff);
my ($cpuTime, $exectime);
if ($str =~ /(\d+)\s*wallclock secs \(\s*?(\d*?\.\d*?)\s*usr\s*\+\s*(\d*?\.\d*?)\s/i) {
$cpuTime = $2; $execTime = $1;
# printf ("Execution time: ~ %.0f seconds\nCPU-Time : %.2f\n", $1, $2);
} # if
print "CPUTIME: $cpuTime, EXECTIME: $execTime\n";
User since
2003-08-14
87
Artikel
BenutzerIn
Hi Strat,
danke, hätte nicht gedacht, dass es so simpel ist.
Viele Grüße
Steffen
User since
2003-09-10
141
Artikel
BenutzerIn
Für was steht "EXECTIME" genau? Würde sagen für Ausführzeit, aber bei mir steht da immer 0 oder 1 :rock: Also kann es das nicht sein.
Haut mich nicht, ich bin ein Noob!
User since
2003-08-08
2561
Artikel
HausmeisterIn
Mit Time::HiRes geht das AFAIK auch!
Gruß, Erik!
s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}
It's not a bug, it's a feature! - [CGI-World.de]
User since
2003-11-28
3645
Artikel
ModeratorIn
Ich glaube gelesen zu haben, dass Time::HiRes unter Windows nicht funktioniert, bzw. hat man dort nur eine Aufloesung von einer Sekunde.
Ausserdem sind die Anwendungsbereiche von Time::HiRes und Benchmark unterschiedlich: das letztere Modul berechnet hauptsaechlich die Zeit, die der Prozess bei der CPU beansprucht, waehrend Time::HiRes die tatsaechlich verflossene Zeit berechnet. Das macht einen Unterschied, wenn man auf einer Maschine mit vielen laufenden Prozessen testet.