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

pq
 2009-05-09 13:55
#121377 #121377
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
2009-05-09T11:46:29 pktm
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?

ja

Quote
Kann das nicht ein Performanzproblem werden?

die frage ist eigentlich falsch gestellt.
die bedingung im schleifenkopf wird per definition immer aufgerufen, und das muss sie deshalb auch. liefert eine methode also evtl. unterschiedliche ergebnisse, würde das ja das programm kaputtmachen, wenn perl sich faulerweise einfach das erste ergebnis merken würde.

Quote
Wäre es nicht besser, den Wert vorher in eine Variable zu packen?

klar. warum nicht? ein methodenaufruf kostet immer ein wenig zeit. wenn du wirklich viele durchläufe hast, dann speicher es in einer variablen.
aber ich frage mich, wieso du nicht gleich die performantere art der schleife wählst. in dem fall einer einfachen inkrementierung würde man eher folgendes schreiben:
Code (perl): (dl )
for my $row (0 .. $table->nofRow) { ... }

das ist lesbarer und gleichzeitig performanter.

Quote
Oder optimiert Perl das irgendwie weg?

das darf perl aus den oben genannten gründen nicht.
Last edited: 2009-05-09 13:56:52 +0200 (CEST)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Performanz der bedingung der for-Schleife