CRC64

Anwendungen, Tools, Userlibs und anderes nützliches.
msschulte

CRC64

Beitrag von msschulte »

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.
Zuletzt geändert von msschulte am 19.11.2006 06:52, insgesamt 1-mal geändert.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Hallo!

Toll, wie du dich ins zeug legst! :allright:

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
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Beitrag von Frogger »

Ohne das testen zu wollen, wie schnell ist es im Vergleich zu CRC32 von PB?
[PB4.20]
msschulte

Beitrag von msschulte »

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.
msschulte

Beitrag von msschulte »

Hab endlich raus wohin die Performance verschwand.

Bisher sah das bei mir so aus:

Code: Alles auswählen

crc32 = CRC32(@buffer, Len(buffer), crc32)
Dachte es läg evtl. an Len() von PB und hab das mal genauer untersucht:

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
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:

Code: Alles auswählen

length.l = Len(buffer)
...
crc32 = CRC32(@buffer, length, crc32)
.. 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. :wink:
msschulte

Beitrag von msschulte »

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
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

wow, nicht schlecht. :o

wenn du dich so gut mit asm auskennst, warum kontaktierst du nicht einfach fred und zeigst ihm, wo er was optimieren kann/soll. :wink:

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.
msschulte

Beitrag von msschulte »

nco2k hat geschrieben:ps: deine strlen funktion gibt immer 1 zurück, wenn unicode aktiviert ist.
Jup, die ist nur für ASCII gemacht. :D
Benutzeravatar
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:

Beitrag von HeX0R »

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 :mrgreen: .
msschulte

Beitrag von msschulte »

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 :mrgreen: .
Richtig, Geschmackssache - und OpenSource ist nicht mein Geschmack.
Die LIB ist auch vielmehr für Versuchszwecke..
Antworten