Fast Hashtable

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

edel: Ist das nicht noch einer von den "alten" Phenoms mit dem Translation-Lookaside-Buffer-Fehler? Soweit ich weiss kostet der nötige Workaround (ist im BIOS implementiert) einen Haufen Leistung/Geschwindigkeit.

//EDIT: Siehe auch:
http://de.wikipedia.org/wiki/Phenom#Errata
Zuletzt geändert von hardfalcon am 08.12.2008 22:47, insgesamt 1-mal geändert.
Benutzeravatar
inc.
Beiträge: 348
Registriert: 27.10.2004 12:25

Beitrag von inc. »

Ich habe das ganze auf Speed optimiert, das ist wohl die schnellste Hashtable die je in PB geschrieben worden ist.

Als Basis diente mir dabei diese geniale Hashtable von Inc:
http://www.purebasic-lounge.com/viewtop ... c&start=12
Ich habe es nur kurz überflogen, daher sorry wenn ich was falsch vorweg nehmen sollte, aber ...
sorry, und mit allen Respekt für deine 'Weiterentwicklung': Anstatt am bereits vorhandenen Projekt Feedback zu geben, und Testergebnisse in jenem Thread auch nur ansatzweise weiterzugeben und dort mir zu helfen, was die Weiterentwicklung angeht, machst du hier einem neuen Thread auf, wo das Ding mit ein paar Änderungen erneut vertrieben wird.

Ja, es ist ein Link zum Original-Thread vorhanden, aber mal ehrlich ... so ganz die nette Art ist das nicht ;-). Aber viell. sehe ich das ja auch etwas eng.
Zuletzt geändert von inc. am 08.12.2008 22:59, insgesamt 1-mal geändert.
Hier gibts die OOP Option für PureBasic.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

@edel:

Verstell mal die Start-Blockgröße auf was anderes (viiiel größeres), sollte helfen.

@inc:

Sorry wenn du das in den falsche Hals gekriegt hast. Ich hab groß in den ersten Thread und in jeden Source geschrieben wo ich die Basis herhab.
Wollte dir nicht deine Arbeit stehlen.

Ich habe einiges modifiziert (Object-Managemant raus => mehr Speed, Asm => Mehr Speed, Hashing - Alog fix und nicht mehr wählbar => mehr Speed, variable Blockgröße bei jeder HT, delete raus => mehr Speed,Count raus, Exists rein, anderer Prime-Algo).

Ich hab deine HT eben an PX angepasst wie ich sie brauchte und verbessert. Ich hab sogar auf die PX Seite geschrieben das ich die verwende: http://www.paladiumx.forgesoft.net/inde ... 2&Itemid=3

Sorry wenn das so rübergekommen ist als wollte ich dir deinen Source klauen.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
inc.
Beiträge: 348
Registriert: 27.10.2004 12:25

Beitrag von inc. »

Ich unterstelle dir kein Klauen. Aber wenn etwas von mir (und den anderen dort) entwickelt oder weiterentwickelt wird, hätte ich es klasse gefunden, wenn es da in der Originalentwicklung ein Feedback gegeben hätte. Thats all.
Hier gibts die OOP Option für PureBasic.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

hardfalcon hat geschrieben:edel: Ist das nicht noch einer von den "alten" Phenoms mit dem Translation-Lookaside-Buffer-Fehler? Soweit ich weiss kostet der nötige Workaround (ist im BIOS implementiert) einen Haufen Leistung/Geschwindigkeit.

//EDIT: Siehe auch:
http://de.wikipedia.org/wiki/Phenom#Errata
Rev B3 <)

@cxAlex
Ok es ist jetzt etwas schneller, dafuer ist aber auch der
Speicherverbrauch sehr hoch, selbst wenn ich da nichts
reinpacke. Kann man das nicht irgendwie dynamisch
anpassen, oder was waere denn ein guter Mittelwert??
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Du könntest das 2/3 Anpassen an 1/1 also er reallokieren wenns ganz voll ist. Desto größer die Blockgröße desto mehr Speicher braucht man, aber desto weniger oft muss man realokieren, da muss man für jedem Fall einen passenden Mittelweg finden.

// Edit: @Edel: wie langsam ist es den Bei dir? bei mir Brauchen 25.000 Einträge zum schreiben 16 ms.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Antworten