Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.051 Beiträge
 
Delphi 12 Athens
 
#5

Re: ReadFileScatter/WriteFileGatter

  Alt 10. Jan 2007, 18:49
Dat mit der union hatte ich bei der Übersetzung wohl dodal übersehn.
Also, Wenn man es so sieht, dann passen die Typengrößen natürlich ... hätte ja beinah schon die Vermutung bekommen, dat die es im 32-Bit-Windows anders definiert hatten.


Hab's entsprechend geändert


Hatte grad keine neue Version von deinem FileSplitter da ... aber daß das noch nicht optimierte langsamer ist, war ja wohl klar.

Code:
Testdatei: 2,4 GB
Meines:     9:39, 9:37
dein Altes: 16:18, 14:02  (5.5.5.1228 28.12.05)
ein aktuellerer Vergleich folgt vermutlich morgen.


Aber 'nen kleinen Test hatte ich dennoch mal gemacht ... ReadFileScatter ist wohl 'nen Hauch schneller gewesen
Code:
4.000.000.000 Byte

ReadFile+NoCache        89,828 s = 42,5 MB/s
ReadFile+NoCache+Async  67,797 s = 56,3 MB/s
ReadFileScatter         67,781 s = 56,3 MB/s
Ach ja, bei dem Testprogramm:
ersma "kleinen" Fehler behoben



dieses
Delphi-Quellcode:
FillMemory(@A1[0], SizeOf(A1), 0);
FillMemory(@A2[0], SizeOf(A2), 0);
durch Folgendes ersetzt
Delphi-Quellcode:
FillMemory(@A1[0], Length(A1) * SizeOf(FILE_SEGMENT_ELEMENT), 0);
FillMemory(@A2[0], Length(A2) * SizeOf(FILE_SEGMENT_ELEMENT), 0);
ReOpenFile-Ersatz eingefügt - wegen SetFilePointer + not sector-aligned + FILE_FLAG_NO_BUFFERING
siehe MSDN-Library durchsuchenSetFilePointer


Und dann noch einiges anderes nachgerüstet ... jetzt sollten wohl schonmal “alle“ möglichen Lese-/Schreibmethoden vorhanden sein.
Muß aber noch ein bissl was ändern ... ist halt nicht so ganz leicht ein halbwegs “gerechtes“ Prüfszenario für alle Metoden zusammenzustellen, vorallem wenn die etwas “chaotische und nicht zu steuernde“ SystemCache so mitspielen soll, wie sie es soll

[add]
ach ja, dat SetFilePointer+NotSectorAligned+FILE_FLAG_NO_BUFFE RING-Problem betraf natürlich auch dieses Programm, daher hier auch nochmal 'ne aktuelle Version ... 's wäre ja nicht schön wenn plötzlich ein paar Bytes mehr in der geteilten Datei auftauchen
Angehängte Dateien
Dateityp: zip readfilescatter_164.zip (225,5 KB, 13x aufgerufen)
Dateityp: exe filesplitter_483.exe (158,0 KB, 8x aufgerufen)
Dateityp: dpr filesplitter_102.dpr (13,6 KB, 10x aufgerufen)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat