Forum: Programmieren allgemein
by Uwe Raabe,
25. Sep 2020
Klar, kein Problem. Das Caching des Betriebssystems kann ich natürlich so nicht umgehen, aber ich kann adäquate Voraussetzungen für ein qualifiziertes Ergebnis schaffen. Da ich hier auf einer NVMe SSD arbeite, spielt das eh keine große Rolle.
program CompareFileBench;
{$APPTYPE CONSOLE}
uses
System.SysUtils,
System.Classes,
System.Hash,
Forum: Programmieren allgemein
by Uwe Raabe,
24. Sep 2020
Bei meinen Versuchen braucht THashMD5 ca. 9x soviel Zeit wie ein CompareMem auf 4k Blöcke bei identischen Dateien von ca. 600kB
Vergrößere ich die Blöcke auf 32k, steigt der Faktor auf ca. 30!
Forum: Programmieren allgemein
by Uwe Raabe,
24. Sep 2020
Stimmt, aber CompareMem in SysUtils ist es.
Das ist so ein bisschen Statistik. Eenn sich die Dateien häufig erst am Ende unterscheiden, ist es meist performanter die Datei komplett oder blockweise einzulesen. Blockweise Einlesen ist in der Regel ein guter Kompromiss.