Um eine Entscheidung pro oder kontra WeakMap zu fällen hilft letztendlich nur Memory- und CPU-Profiling. Die Chrome-Dev-Tools haben die richtigen Werkzeuge dafür an Board.
Ich habe da mal einen kleinen Benchmark geschrieben, um das Verhalten der Gabrage-Collection zwischen WeakMap und Map zu untersuchen. Der Benchmark erstellt jeweils 10.000.000 Objekte und speichert sie in der entsprechenden Datenstruktur ab. Ferner wird eine Referenz auf jedes 10te Element im Speicher behalten. Letzteres vor allem, um die Auswirkungen der Garbage-Collection bei der WeakMap zu beobachten. Die Ergebnisse aus Chrome sind teilweise überraschend: Der Map-Benchmark benötigt auf meinem Rechner etwa 15,77 s, WeakMap dagegen 35,78 s. Zusätzlich arbeitet die Garbage-Collection für Map etwa 3,53 s verglichen mit 41,13 s für die WeakMap. Überraschend für mich ist, dass die Garbage-Collection weder bei Map noch bei WeakMap tatsächlich Müll einsammelt, der Speicherbedarf wächst einfach konstant an. Ich hab mal Paul Irish gefragt, was da los ist. Ich vermute, dass mit dem Benchmark etwas nicht stimmt.