Zitat:
Die Delphi-eigenen Methoden sind elendig langsam. Wenn THashMD5 bei mir 200ms braucht, braucht
DEC für dieselbe Arbeit ~60ms.
Und was hat
DEC mit MD5 zu tun?
Das liegt nicht an Delphi - du vergleichst hier zwei Hash Funktionen miteinander.
Ich habe dir anhand eines Beispiels [md5] zeigen wollen, wie du bei der Berechnung des MD5 Hashs einer beliebig grossen Datei immer nur einen Teil und nie das ganze File laden musst. [Du hattest wegen
RAM schiesst in die Höhe geschrieben - und ich dachte ich mache dir eine Freude, wenn du siehst, dass dies nicht sein muss.
und erst noch alles in Byte statt string]
Wenn du lieber SHA1 verwendest, dann verwendest du lieber SHA1 - dein Entscheid... sei mit deinem Code erst dann zufrieden, wenn eine Suche nach dem Wort "string" ins Leere läuft.
Wenn du alles in deinem Code Byte basiert machst, passieren auch nicht Fehler wie dieser hier:
Weg mit dem Trim [ich weiss, ich wiederhole mich] Grund: Solltest du mit diesem Code irgendwann den Hash Wert einer Datei mit Leerzeichen am Anfang oder Ende des Files berechnen wollen [OK, wie erwähnt bei .exe mind. am Anfang nicht der Fall], dann rechnest du diese nicht mit und die Berechnung geht in die Hose.
sHash := THashFunctions_Selftest.CalcHash([B]Trim([/B]TEncoding.ANSI.GetString(aByteStream.Bytes)));