Frage

Also habe ich ETS verwendet - funktioniert großartig. Ich verwende es jedoch als Cache von Routendaten - die ich beim Lasten des Moduls lade und speichere, wenn eine Änderung vorgenommen wird (es wird weit mehr als geschrieben gelesen).

Ich dachte, dass Dets die Dinge viel sauberer machen würde - ich muss mir keine Sorgen machen, die Beharrlichkeit des Tisches zu verwalten. Wäre dies eine gute Verwendung von Dets? (Größe ist kein Problem, hauptsächlich besorgt über die erhebliche Erhöhung der Leseleistung - alle Daten können leicht in den Speicher passen).

War es hilfreich?

Lösung

DETS ist in den meisten Fällen viel langsamer als ETS, aber ich denke, wenn Ihre Datengröße klein ist, dann wird es am meisten, wenn sie vom Festplattencache zwischengespeichert werden, und wird schneller, um das zweite Mal abzurufen. Das Beste ist also das Beste Versuchen Sie es mit Ihrer Art von Gebrauch

Aber haben Sie in Betracht gezogen, MNEsie anstelle von ETs direkt zu verwenden? Mit den MNEsia -Tabellen -Typ -Disc_Copies erhalten Sie die ETS -Geschwindigkeit und dennoch Persistenz

Andere Tipps

Direkt von der Dets Man Page:

"Da alle von DETS ausgeführten Operationen Disk-Operationen sind, ist es wichtig zu erkennen, dass ein einzelner Nachbesserungsvorgang eine Reihe von Festplattensuch- und Lesevorgängen beinhaltet. Aus diesem Grund sind die DETS-Funktionen viel langsamer als die entsprechenden ETS-Funktionen, obwohl, obwohl die entsprechenden ETS-Funktionen, obwohl es sich Dets exportiert eine ähnliche Schnittstelle. "

Das heißt, für einen motivierten Speicher ist Dets keine optimale Wahl.

(Ich muss zugeben, dass ich diese Designentscheidung seltsam finde - eine bessere Implementierung sollte die jüngsten Suchanlagen zwischenspeichern. Da diese ETS und DETs in Erlang jedoch grundlegende Einrichtungen sind, denke ich, dass die Implementierer diese Optimierung für die Benutzer verlassen haben.)

Lesen Sie zum seltenen Schreiben viele Daten, dass Sie in einem Speicher in Ordnung sind. Schauen Sie sich ein 'Mochiglobal' an. Mochiweb verfügt über ein ordentliches Modul, das den gemeinsam genutzten Heap von Erlang für Modulkonstanten über das Code-Management-System missbraucht, um einen superschnellen Zugriff auf Begriffe zu gewährleisten, indem Module mit angegebenen Werten als Konstanten im laufenden Fliegen generiert werden.

Riak verwendet ein Mochiglobal für den Ringstatus IIRC.

Ihre Quelle ist die Quelle:

https://github.com/mochi/mochiweb/blob/master/src/mochiglobal.erl

Hier gibt es hier natürlich keine Ausdauer, aber wenn Sie die Lesevorgänge stark optimieren möchten, können Sie nicht viel besser werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top