Aktuelle Zeit: 21.01.2021 04:49

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: CRC64
BeitragVerfasst: 10.10.2006 00:23 
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.

Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.10.2006 00:41 
Offline
Benutzeravatar

Registriert: 01.10.2005 13:15
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:
Macro Happy
 ;-)
EndMacro

Happy End


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.10.2006 00:52 
Offline
Benutzeravatar

Registriert: 14.03.2006 19:27
Ohne das testen zu wollen, wie schnell ist es im Vergleich zu CRC32 von PB?

_________________
[PB4.20]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.10.2006 01:14 
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.


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.10.2006 13:35 
Hab endlich raus wohin die Performance verschwand.

Bisher sah das bei mir so aus:
Code:
crc32 = CRC32(@buffer, Len(buffer), crc32)

Dachte es läg evtl. an Len() von PB und hab das mal genauer untersucht:
Code:
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:
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:


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.10.2006 16:54 
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


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.10.2006 17:09 
Offline
Benutzeravatar

Registriert: 08.09.2004 23:13
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.10.2006 17:17 
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


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.10.2006 19:08 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
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: .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.10.2006 19:51 
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..


Nach oben
  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye