|
IF ~UnixMappedFiles.Open(in, pathname, UnixMappedFiles.read, NIL) THEN Write.StringS(Streams.stderr, pathname); Write.StringS(Streams.stderr, ": cannot be "); Write.StringS(Streams.stderr, "opened for "); Write.LineS(Streams.stderr, "reading"); Process.Exit(Process.indicateFailure); END; |
Das cp-Kommando verwendet aber noch weitere Tricks,
um so überragend schnell zu werden.
Einer der Tricks vermeidet das Einlesen, indem die
Eingabe-Dateien in den Adreßraum des kopierenden Programms
gelegt werden.
| |
In Oberon kann dieser Trick verwendet werden, wenn
an Stelle von UnixFiles das Modul UnixMappedFiles
verwendet wird. Das funktioniert aber nur für reguläre Dateien.
|
thales$ time Concatenate2 10m >10m.2 real 0m1.72s user 0m1.32s sys 0m0.23s thales$ time Concatenate3 10m >10m.2 real 0m1.53s user 0m1.09s sys 0m0.30s thales$ |
Copyright © 2004, 2005 Andreas Borchert, in HTML konvertiert am 18.02.2005 |