Schnelleres Kopieren II

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

Concatenate3.om
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$

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 2004, 2005 Andreas Borchert, in HTML konvertiert am 18.02.2005