Thread Performanz der bedingung der for-Schleife (4 answers)
Opened by pktm at 2009-05-09 13:46

pktm
 2009-05-09 13:46
#121376 #121376
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Wenn ich eine For-Schleife durchlaufe, wird doch bei jeder Iteration der Schleifenkopf geprüft. Wenn ich den nun so definiere, dass in der bedingung eine Methode eines Objekts aufgerufen wird, wird dann jedes Mal die Methode des Objekts aufgerufen?
Kann das nicht ein Performanzproblem werden?

Die Frage kam mir, weil ich gerade eine tabseparierte Datei bearbeite, und dazu Data::Table verwende. Da durchlaufe ich alle Zeilen mit:
Code: (dl )
1
2
3
for( my $row = 0; $row < $table->nofRow(); $row++ ) {
# keks
}


Wäre es nicht besser, den Wert vorher in eine Variable zu packen? Also so:
Code: (dl )
1
2
3
4
my $max = $table->nofRow();
for( my $row = 0; $row < $max; $row++ ) {
# keks
}


Die Anzahl der Daten verändert sich nicht.
Mein gedanke war, dass ich meistens nciht nachsehe, ob so eine Funktion wie nofRow performant implementiert ist. Schlecht wäre ja z.B. (wovon ich nciht ausgehe), wenn nofRow bei jedem Aufruf die Zeilen meiner TSV zählen würde.
Oder optimiert Perl das irgendwie weg?
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Performanz der bedingung der for-Schleife