Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hashtable oder einfacher Clip-Vektor



BlueJay
22-12-2007, 11:41
Hallo Experten,

Für ein Spielchen möchte ich eine Reihe Sounds verwenden.
Ich bin mir nicht sicher, ob ich die in einer Hashtable anlegen oder einen einfachen Vektor verwenden und die Sounds via Indices auswählen soll.

Der Vektor ist ist zwar rasend schnell, aber im Spiel selbst ist die Hashtable um etliches bequemer anzusprechen.
(nein, ich will nicht Eclipse benutzen und mir meine Entscheidungen von einem Entwicklungssystem abnehmen lassen! :D Ich will nur wissen, ob ich meine Sound-Bibliothek besser mit Vektoren oder Hashtables aufbauen sollte.)

Der Sound selbst wird meist in einem zeitkritischen Abschnitt gebraucht (60% CPU-Last, damit das Ganze flüssig läuft - Arbeitsspeicher ist kein Thema).

Frage: bringt die Hashtable so viel Overhead mit, dass ich besser bei dem Vektor bleiben sollte?

so long,
BlueJay

anda_skoa
23-12-2007, 14:36
Das ist quasi eine Frage der Datenmenge und im Falle eines Hash eine Frage der Hashfunktion.

Wenn du keine Einfügen-/Entfernen Operationen im laufenden Betrieb hast, ist normalerweise der Vector besser, weil eben konstanter Zugriff gewährleistet ist.

Allerdings verstehe ich den Zusammenhand mit bequemer hier nicht ganz, inwiefern ist der Zugriff mittels Hashtable bequemer?

Ciao,
_

BlueJay
24-12-2007, 01:58
Faul bin ich deshalb, weil ich die Key-Namen auch als Anzeige missbrauchen will.

Die Hashtable wird gefüttert mit externen files (je nach config eingelesen), in dem die Einträge zur Zeit, d.h. für dieses Projekt, noch auf 2 Seiten passen, Betonung auf "zur Zeit". Die Daten liegen da zweckmäßigerweise als key=wert vor, heftiger Gebrauch wird derzeit vom key gemacht.
Das Schätzchen hat seinen Weg in eine Library gefunden, und nun soll optimiert werden.

Irgendwie stelle ich mir vor, dass die keys in Vektoren sequenziell abgegrast werden, in Hashtables es aber eine nette Funktion gibt, die aus dem Key direkt den Platz der Daten errechnen kann. War zumindest auf einem uralten Unix-Derivat (Friede seiner Asche!) so. Erfahrung bisher: Integer-Indices, externe Indexfiles und der alte hash waren fix genug, alphanumerische Indices eher eine Katastrophe.

Diese Katastrophe findet sich auf einem Weihnachtsgeschenk wieder, also ist das nächste Projekt, dieses Teil zu "beschleunigen".
Platz für eine Datenbank ist da nicht (viel), also muss man da nach dBase2-Art was stricken. Den Indexfile möchte ich mir gerne sparen, alte Hasen wissen, warum.

Der Inhalt wird ca. 1-2x pro Woche (denke ich mal) von einem Laien geändert. Also Index-File updaten ist (möglichst) nicht drin.

Die Zugriffssequenz ist random im schlimmsten Sinn des Wortes.
(Sorry, darf nicht genauer werden.)

Grad gecheckt, ca.300 Einträge sollen schon verwaltet werden, kann aber bei einem Upgrade auf 1000 steigen.

so long,
BlueJay

BlueJay
31-12-2007, 15:25
Auf die Frage, ob eine Hashtable gegenüber einem Vektor Overkill ist, hat jetzt ein Kollege nur gemeint, ich solle nicht so zimperlich sein und nach Herzenslust hashen.

so long,
BlueJay