Thread abgedrehtes problem mit switch: oder bin ich blind? (71 answers)
Opened by deepblack at 2004-06-16 21:56

Gast Gast
 2004-06-17 17:33
#83443 #83443
[quote=ptk,17.06.2004, 15:16][quote=Dieter,17.06.2004, 13:15][Der Hash wird (gewöhnlich) bei jedem Durchlauf neu aufgebaut (unter mod_perl natürlich nicht).[/quote]Warum sollte das bei mod_perl anders sein? Und die Ausgabe von
Code: (dl )
perl -MO=Concise -e 'for (1..10) { my $y = {1=>2,3=>4}; $y->{$x} }'
interpretiere ich dahingehend, dass doch jedesmal der Hash neu aufgebaut wird --- es sei denn, man legt ihn global oder als Konstante ab.

Quote
Trotzdem läuft die 'case-like' Verzweigung per Hash, schneller als der if-elsif Block (es sei denn die erste if-Bedingung trifft sofort zu).
Benchmark?

Quote
Aber mal davon abgesehen ...
jede ernstzunehmende Perl-Literatur distanziert sich in aller Form vom Einsatz eines if-elsif-Blocks.
Meinst du den Einsatz des Wortes "horrors" in perlsyn.pod? Naja, trotzdem gilt TIMTOWTDI.

Quote
Edit:
Wenn man mich fragen würde was schneller compiliert wird, ein if-elsif-Block oder ein Hash, so würde ich denn doch auf den Hash tippen.
Die Compilezeit halte ich fuer relativ irrelevant, perl compiliert grundsaetzlich sehr schnell.[/quote]
Unter mod_perl bleibt der Hash (nach dem ersten Programmstart) bestehen; der if-elsif-Block natürlich auch.
Benchmark:
ist nicht erforderlich - der Zugriff auf ein Hash-Element ist 'immer' schneller als der Durchlauf eines if-elsif-Blocks.
Literatur:
z.B. Perl-Kochbuch
Compile-Zeit:
der Hash wird während der Compilierung aufgebaut

View full thread abgedrehtes problem mit switch: oder bin ich blind?