Hallo, On Tue, 24 Jun 2003, Ralf Corsepius wrote:
Am Die, 2003-06-24 um 00.50 schrieb David Haller:
On Mon, 23 Jun 2003, Ralf Corsepius wrote:
In einer vergleichbaren Anwendung habe ich schon Faktor ca. 20-50 beobachtet (mit perl < 0.5.6)
Hm. Hab's mal mit 5.005 getestet, s.u., ist das alt genug?
D.h. je nach Anwendungsgebiet ist mal die eine oder die andere Lösung sinnvoller, schneller oder "besser".
Ack. Es wurde halt nix zur Dateigroesse gesagt, und bevor z.B. ein script wg. Speichermangel gar nicht laeuft, soll's ruhig etwas laenger laufen... Im einem Fall war es ein Code-Generator, der ca. 100 Mal pro "make" Lauf aufgerufen wird. < 0.5 sec statt > 10 sec wirken sich dabei deutlich aus.
Jup. Da ist aber perl sowieso eher weniger geeignet.
So, nun interessiert mich das jetzt aber mal... ;)
Die Rechnung ist im Prinzip einfach:
1 x File-I/O + n x Mem-Zugriff gegen n x ( File-I/O + Mem-Zugriff )
[Leg die Dateien auf ein nfs-gemountetes File-System und/oder ein mit I/O belastes System.]
Mag sein, dass neuere Perl/glibc/Linux-Implementierungen ein günstigers Caching verwenden als ältere Versionen oder sich neuere HW derart auswirkt, dass die Performanceunterschiede nicht mehr so gravierend auswirken.
Hab ich mal getestet, parallel zu einem 'dd if=./set5.dat of=/dev/null' in einer Endlosschleife... dh@slarty[3]: ~/src/perlbenches (130)$ for s in dat2html_*; do echo \ "==== $s ==">&2; for i in 5; do echo "set$i: ">&2; time \ /usr/bin/perl5.00503 $s "set${i}.dat" >/dev/null; done; done 2>&1 \ | awk '/^=/{print;}/^set/{t=$0;}/^VmSize/{t=t $0;}/real/{print t," ",$0}' ==== dat2html_dh.pl ==== set5: VmSize: 2528 kB real 1m6.266s ==== dat2html_dh_foreach.pl ==== set5: VmSize: 56072 kB real 1m16.403s ==== dat2html_dh_noprint.pl ==== set5: VmSize: 2528 kB real 0m50.156s ==== dat2html_jan.pl ==== set5: VmSize: 56072 kB real 1m7.710s dh@slarty[3]: ~/src/perlbenches (0)$ for s in dat2html_*; do echo \ "==== $s ====">&2; for i in 5; do echo "set$i: ">&2; time \ /usr/local/bin/perl5.8.0 $s "set${i}.dat" >/dev/null; done; done 2>&1 \ | awk '/^=/{print;}/^set/{t=$0;}/^VmSize/{t=t $0;}/real/{print t," ",$0}' ==== dat2html_dh.pl ==== set5: VmSize: 2668 kB real 1m41.323s ==== dat2html_dh_foreach.pl ==== set5: VmSize: 72416 kB real 1m45.644s ==== dat2html_dh_noprint.pl ==== set5: VmSize: 2664 kB real 1m22.107s ==== dat2html_jan.pl ==== set5: VmSize: 72416 kB real 1m34.497s Man achte wiederrum auf den Speicherverbrauch... -dnh -- 132: Plug and Play Kondome. (Rolf Siebrecht)