hierbei Threads
Seid ihr irre?
Gleichzeitiges Schreiben/Lesen auf einem Datenträger (wenn es nicht grad eine SSD ist) würde alles wohl eher noch verschlimmern.
- erstmal schauen was so langsam ist
- wie groß sind die Dateien?
- man kann es höchstens verlagern
z.B.
Code:
Öffne(datei3); > in TMemoryStream laden
Loop:
GetMD5(datei1);
GetMD5(datei2);
ErsetzeDateiMitAnderer(datei1, datei2);
Ersetze(MD5String1 mit MD5String2 in gesamter Datei);
wiederhole Loop;
Schließe(datei3); > den MemoryStream speichern
das Ersetzen der MD5-Werte könnte man parallel zur Bearbeitung (hasching)
der jeweils Nächsten in einem Thread machen
> der Thread für die Festplatte und der für den
RAM (TMemoryStream) würden sich weniger gegenseitig stören
mach ich z.B. in meinem SSF so, da läuft ein Thread durch die Liste und fragt einen anderen Thread nach den MD5s von Dateien (dieser führt eine Art Stack mit allen Dateien, die er bekommt und arbeitet sie nacheinander ab und dann gibt es noch den Hauptthread für die
GUI ... parktisch immer nur ein Thread für den Datenträger und ein/mehrere Threads für Berechnungen im
RAM)
[edit]
man, hab ich langsam geschrieben ... im Prinzip hat schlecki recht und das ist auch der erstmal einfachste Optimierungsweg
was noch ginge, wäre alle MD5s zu merken und sie am Ende in einem Durchgang zu ersetzen.
und ansonsten halt erstmal schauen was so langsam ist ... wie gesagt, threads sind hier eigentlich nicht wirklich sinnvoll und machen nur mehr arbeit, selbst wenn sie sogestaltet sind, daß sie sich nicht gegenseitig behindern.
Ein Therapeut entspricht 1024 Gigapeut.