-
Pengganti ES6 Maps yang dibatasi hingga 16 juta entri: dapat menyimpan lebih dari 1 miliar key
-
Dikembangkan dengan C++ dan menyertakan wrapper untuk Node.js
→ Dapat melakukan baca/tulis 500 ribu key per detik
→ Overhead memori rendah
→ Tidak disimpan di V8 Heap
→ Mendukung buffer, string, angka, boolean, dan objek
-
Kompatibel secara dasar dengan API ES6 Map: get, set, has, ddelete, clear, length
-
Secara internal menggunakan teknik Separate Chaining: metode indeks + linked list
2 komentar
Wah, apa memang ada alasan untuk memakai Map sebesar itu ya deuh
Dalam praktiknya, jika Anda memasukkan lebih dari 2^24 kunci ke Map di Node.JS, akan terjadi heap error.
Ini bukan bug melainkan batasan yang ditetapkan oleh implementasinya, dan ada jawaban dari pengembang V8 tentang hal ini di StackOverflow.
https://stackoverflow.com/a/54466812/166418
FixedArray yang menyimpan Map memiliki ukuran maksimum 1GB
Pada sistem 64-bit, 1GB / 8B = 2^30 / 2^3 = 2^27 ~= 134M, jadi FixedArray dapat menyimpan maksimum 134 juta elemen
Map memerlukan 3 elemen per entri (Key, value, next bucket link), dan jumlah muatan maksimum dibatasi hingga 50% untuk menghindari tabrakan bucket.
→ Karena kapasitas harus berupa pangkat dua, jika hasil perhitungan 2^27 / (3 * 2) dibulatkan turun ke pangkat dua berikutnya, nilai maksimumnya adalah 2^24