Wenn ich eine unveränderliche Karte, die ich erwarten würde (über einen sehr kurzen Zeitraum - wie ein paar Sekunden) wird das Hinzufügen/Entfernen Hunderttausender von Elementen aus, wird der Standard HashMap
eine schlechte Idee? Nehmen wir an, ich möchte 1 GB Daten über die Karte in < 10 Sekunden so weitergeben, dass die maximale Größe der Map zu jedem Zeitpunkt nur 256 MB beträgt.Immutable Map-Implementierung für große Karten
Ich habe den Eindruck, dass die Karte eine Art "Geschichte" hält, aber ich werde immer Zugriff auf die zuletzt aktualisierte Tabelle (dh ich übergebe die Karte nicht), weil es eine private Mitgliedsvariable von ist Actor
, die nur innerhalb von Reaktionen aktualisiert/zugegriffen wird.
Grundsätzlich vermute ich, dass diese Datenstruktur (teilweise) for issues I am seeing around JVMs going out of memory Fehler beim Einlesen großer Datenmengen in kurzer Zeit sein kann.
Wäre ich besser mit einer anderen Kartenimplementierung und wenn ja, was ist das?
Ja - ich habe es geändert, um die veränderbare Karte zu verwenden, aber ich dachte, dass der ganze Punkt von FP war, dass Unveränderlichkeit groß war! Diese App sollte leicht in weniger als 256 MB Speicher von einer "Wie viele Daten benötigt es wirklich zu einem bestimmten Zeitpunkt" Perspektive laufen. –
Wie groß die Unveränderlichkeit ist, hängt von der Anwendung ab. Wenn Sie eine Anwendung mit sagen wir Bäumen von Nachrichten-Threads ausführen, die an eine Gruppe von Clients gesendet werden, ist Unveränderlichkeit ein Glücksfall - Sie senden nur den aktuellen Baum und müssen sich keine Sorgen darüber machen, dass sich die Datenstruktur selbst ändert unter dir. (Sie müssen immer noch Fälle auffangen, in denen der Client einen Kommentar zu einem Thread hinzufügt, der gelöscht wird, wenn er antwortet.) Für das Hochdurchsatz-Arbeiten in privaten Datenstrukturen, die sehr schnell umkehren, bietet die Unveränderlichkeit nur wenige Vorteile verlangt viel Aufwand. –
Ja, das ist was ich herausgefunden habe! Wie geht es Haskell oder Clojure in diesen Situationen? Üben sie nicht * Unveränderlichkeit? –