Hallo!
Bringt es etwas zB etwas, die längeren Zeichenketten von identifiers in kürzer Zeichenketten umzuwandeln?
Strings und String-Eigenschaftsnamen werden intern als UTF-16 abgespeichert und jedes Zeichen verbraucht mindestens zwei Bytes. Natürlich lohnt es sich, diese Daten einzusparen. Die Einsparungen lassen sich berechnen und durch Heap-Snapshots auch nachvollziehen. Wie viel das im Vergleich zu den Gesamtdaten ist, steht auf einem anderen Blatt. Vielleicht kannst du mit den Identifiern nur ein paar Prozent sparen. Zudem musst du vermutlich irgendwo Hash-Algorithmen nutzen, um die langen Strings auf kurze abzubilden. Du erkaufst dir den Speicher-Vorteil ggf. durch einen Performance-Nachteil anderswo.
Beim Übergeben von Daten an WebWorker muss ein gewisses Serialisieren oder Marshalling vorgenommen werden. Früher ließen sich mit postMessage nur Strings an den Worker schicken, mittlerweile beherrschen die Browser auch einfache Objekte mit den in JSON unterstützten Datentypen. Trotzdem muss der Browser diese Objekte traversieren, siehe Structured clone algorithm. Je kleiner die Objekte sind, desto schneller geht das und desto weniger Speicher wird benötigt. Im Prinzip können die Browser hier Copy on Write verwenden, anstatt das Objekt im Speicher zu verdoppeln. Aber davon würde ich im Zusammenhang mit WebWorkern nicht ausgehen, denn diese haben ihre eigene Sandbox.
Generell würde ich ein sequenzielles Verarbeiten von Daten empfehlen, sodass du nie große Datenmengen im Speicher hast, sondern immer ein begrenztes Set an Arbeitsdaten, das du schnell reduzierst. Ich nehme an, du machst eine Art Map/Reduce? Woher kommen die Daten denn her und wo gehen die Analyseresultate hin?
Grüße,
Mathias