CRC64
CRC64
Tach!
Hab wieder ne neue UserLibrary mit FASM gemacht:
http://home.arcor.de/msschulte/crc64iso3309.zip
CRC64 nach ISO 3309 (finde den Polynom persönlich nich so doll).
Wenn ich das richtig verstanden habe benutzt SWISS-PROT + TREMBL
den Algo um schnell Unterschiede zwischen DNA bzw. DNS zu erkennen.
Würde ja eher andere Hash-verfahren empfehlen aber
die Länge von 64bit macht ihn für manche Dinge dennoch interessant.
Hab wieder ne neue UserLibrary mit FASM gemacht:
http://home.arcor.de/msschulte/crc64iso3309.zip
CRC64 nach ISO 3309 (finde den Polynom persönlich nich so doll).
Wenn ich das richtig verstanden habe benutzt SWISS-PROT + TREMBL
den Algo um schnell Unterschiede zwischen DNA bzw. DNS zu erkennen.
Würde ja eher andere Hash-verfahren empfehlen aber
die Länge von 64bit macht ihn für manche Dinge dennoch interessant.
Zuletzt geändert von msschulte am 19.11.2006 06:52, insgesamt 1-mal geändert.
Hallo!
Toll, wie du dich ins zeug legst!
Frage: Sind die UserLibs für PB 3.94, 4.00 oder beide geeignet? und eine kleine Befehlsreferenz wär nicht schlecht!
Toll, wie du dich ins zeug legst!
Frage: Sind die UserLibs für PB 3.94, 4.00 oder beide geeignet? und eine kleine Befehlsreferenz wär nicht schlecht!
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Die ist für PB 4.00, unter 3.94 hab ich sie nicht getestet.
Solang sich die Aufrufkonvention nicht geändert hat ist die Lib abwärtskompatibel.
Für die Befehlsreferenz am besten Beispiele ansehen, erklärt sich eigentlich selbst.
Thema Geschwindigkeit (auf meiner Mühle):
PureBasic CRC32Fingerprint: 275.42 mb/s
Mein CRC32: 394.76 mb/s
Mein CRC64: 352.37 mb/s
Es sollte um 500 mb/s drin sein aber PB lag't aus mir unbekanntem Grund.
Solang sich die Aufrufkonvention nicht geändert hat ist die Lib abwärtskompatibel.
Für die Befehlsreferenz am besten Beispiele ansehen, erklärt sich eigentlich selbst.
Thema Geschwindigkeit (auf meiner Mühle):
PureBasic CRC32Fingerprint: 275.42 mb/s
Mein CRC32: 394.76 mb/s
Mein CRC64: 352.37 mb/s
Es sollte um 500 mb/s drin sein aber PB lag't aus mir unbekanntem Grund.
Hab endlich raus wohin die Performance verschwand.
Bisher sah das bei mir so aus:
Dachte es läg evtl. an Len() von PB und hab das mal genauer untersucht:
Die ist zwar nicht perfekt aber die Geschwindigkeit ist in Ordnung.
Lösung war mal wieder einfacher als man selbst glauben mag.
Ich bin wohl etwas VC++ verwöhnt, PB nimmt keine autom. Optimierung vor.
Bestimmt man die Länge nur einmal:
.. hatt man auch die volle Leistung:
PureBasic CRC32Fingerprint: 337.84 mb/s
Mein CRC32: 532.78 mb/s
Mein CRC63: 458.17 mb/s
Wenn man Prüfsummen von Dateien gewinnen möchte sind die Unterschiede wohl unerheblich,
hierbei wird das Ganze dann sowieso von der Festplatte aus gebremst.
Bisher sah das bei mir so aus:
Code: Alles auswählen
crc32 = CRC32(@buffer, Len(buffer), crc32)
Code: Alles auswählen
Len: ;(stdcall)
mov eax, [esp+4]
test eax, eax
jz Len_Exit
mov edx, [esp+4]
or eax, -1
Len_NextByte:
inc eax
cmp byte [edx+eax], 0
jnz Len_NextByte
retn 4
Len_Exit:
xor eax, eax
retn 4
Lösung war mal wieder einfacher als man selbst glauben mag.
Ich bin wohl etwas VC++ verwöhnt, PB nimmt keine autom. Optimierung vor.
Bestimmt man die Länge nur einmal:
Code: Alles auswählen
length.l = Len(buffer)
...
crc32 = CRC32(@buffer, length, crc32)
PureBasic CRC32Fingerprint: 337.84 mb/s
Mein CRC32: 532.78 mb/s
Mein CRC63: 458.17 mb/s
Wenn man Prüfsummen von Dateien gewinnen möchte sind die Unterschiede wohl unerheblich,
hierbei wird das Ganze dann sowieso von der Festplatte aus gebremst.
Hab im Zuge dessen mal ne optimierte Length-Funktion gemacht.
Wenn sich jemand dafür interessiert:
http://home.arcor.de/msschulte/strlen.zip
PB Len: 1560.98 mb/s
strlen: 4376.07 mb/s
Wenn sich jemand dafür interessiert:
http://home.arcor.de/msschulte/strlen.zip
PB Len: 1560.98 mb/s
strlen: 4376.07 mb/s
wow, nicht schlecht.
wenn du dich so gut mit asm auskennst, warum kontaktierst du nicht einfach fred und zeigst ihm, wo er was optimieren kann/soll.
ps: deine strlen funktion gibt immer 1 zurück, wenn unicode aktiviert ist.
c ya,
nco2k
wenn du dich so gut mit asm auskennst, warum kontaktierst du nicht einfach fred und zeigst ihm, wo er was optimieren kann/soll.
ps: deine strlen funktion gibt immer 1 zurück, wenn unicode aktiviert ist.
c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
- HeX0R
- Beiträge: 2954
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Auch andere versuchen sich an Len().
Man muss übrigens nicht aus allem und jedem eine Lib machen, da ist mir der andere Len-Beitrag mit offenem Source irgendwie sympathischer.
Aber das ist Geschmacksache .
Man muss übrigens nicht aus allem und jedem eine Lib machen, da ist mir der andere Len-Beitrag mit offenem Source irgendwie sympathischer.
Aber das ist Geschmacksache .
Richtig, Geschmackssache - und OpenSource ist nicht mein Geschmack.HeX0R hat geschrieben:Man muss übrigens nicht aus allem und jedem eine Lib machen, da ist mir der andere Len-Beitrag mit offenem Source irgendwie sympathischer.
Aber das ist Geschmacksache .
Die LIB ist auch vielmehr für Versuchszwecke..