A.K.A. "Ich wollte doch nur Dateien kopieren..."
alzaimar hat mich
darauf hingewiesen, daß ein kopieren von dateien mit ReadFileScatter und WriteFileGather um einiges schneller sein könnte als mit anderen methoden. informationen über diese beiden funktionen sind rar gesäht, und ich scheitere an der delphi-implementation.
ReadFileScatter und der zugehörige datentyp FILE_SEGMENT_ELEMENT sind delphi unbekannt. wie ich externe funktionen linke ist mir bekannt, allerdings weiss ich nicht wie ich den datentyp deklarieren muss und wie ich dann damit umgehe.
der übersichtlichkeit halber fange ich dafür ein neues topic an und antworte hier:
| alzaimar hat folgendes geschrieben: |
Das Lustige am Scatter/Gather-IO ist, das (glaube ich) bis zu 8 (System-)Seiten ECHT parallel eingelesen werden können. Du kannst also eine gewaltige Steigerung des Durchsatzes erwarten. WaitFor ist der Preis für's asynchrone Arbeiten. Wann musst Du denn warten? Wer sagt, das das immer direkt nach dem Aufruf von Write/Read erfolgen muss? Kannst Du nicht andere Dinge in der Zwischenzeit erledigen?
Desweiteren könntest Du mit asynchronem Kopieren mittels zweier Thread experimentieren. Das klappt solange sich die Dateien nicht über die gleiche HD gehen... |
klingt ja alles nicht schlecht.
in der zwischenzeit habe ich nicht wirklich was zu tun. mein programm kopiert nur. mich hat es nur gewundert, warum das asynchrone lesen mit warten schneller sein soll als synchrones lesen.
zwei threads... uh, gerne, aber nicht für die erste "rohversion". ich will doch "nur kopieren"
