[C++] Daten kopieren - Optimierung
Verfasst: 14.05.2010, 11:52
Ich möchte möglichst effizient Daten auf der Festplatte herumkopieren. Dabei wird es sich hauptsächlich um Dateien im Gigabyte-Bereich handeln. Wie kopiere ich nun am schnellsten Daten von einem Ort an einen anderen auf der Festplatte?
Bisher hab ich das einfach mittels fstream gelöst, was im Durchschnitt jedoch sogar langsamer ist als die Windowseigene Kopierfunktion (CopyFile).
Meine Fragen:
a) Gibt es dafür schnellere Varianten? Ist vielleicht sogar fread / fwrite schneller?
b) Welche Puffergrösse ist am "freundlichsten" für Festplatten? Spielt das überhaupt eine Rolle? Ist 1 Megabyte genauso gut wie 1 Mebibyte?
c) Macht multi-threaded kopieren (ein Thread liest, ein anderer schreibt gleichzeitig) Sinn oder wird dann das Problem bloss auf die DMA ausgelagert? Ich würde meinen, dass besonders dann, wenn von einer auf eine andere Festplatte kopiert wird, dies sinnvoll sein könnte.
Bisher hab ich das einfach mittels fstream gelöst, was im Durchschnitt jedoch sogar langsamer ist als die Windowseigene Kopierfunktion (CopyFile).
Meine Fragen:
a) Gibt es dafür schnellere Varianten? Ist vielleicht sogar fread / fwrite schneller?
b) Welche Puffergrösse ist am "freundlichsten" für Festplatten? Spielt das überhaupt eine Rolle? Ist 1 Megabyte genauso gut wie 1 Mebibyte?
c) Macht multi-threaded kopieren (ein Thread liest, ein anderer schreibt gleichzeitig) Sinn oder wird dann das Problem bloss auf die DMA ausgelagert? Ich würde meinen, dass besonders dann, wenn von einer auf eine andere Festplatte kopiert wird, dies sinnvoll sein könnte.