7 पॉइंट द्वारा xguru 2020-07-24 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • 1.6 करोड़ की सीमा वाले ES6 Maps का विकल्प: 1 अरब से अधिक keys स्टोर कर सकता है

  • C++ में विकसित और Node.js के लिए wrapper शामिल

→ प्रति सेकंड 5 लाख keys read/write कर सकता है

→ memory overhead कम

→ V8 Heap में स्टोर नहीं होता

→ Buffer, string, number, boolean, object सपोर्ट करता है

  • ES6 Map API के साथ बुनियादी रूप से compatible: get, set, has, ddelete, clear, length

  • अंदरूनी रूप से Separate Chaining तकनीक का उपयोग: index + linked list तरीका

2 टिप्पणियां

 
kbumsik 2020-07-24

अरे, इतना बड़ा Map इस्तेमाल करने की सच में कोई वजह होगी क्या?

 
xguru 2020-07-24

असल में, Node.JS में अगर आप 2^24 से ज़्यादा keys को Map में डालते हैं, to heap error होता है.

यह कोई bug नहीं है, बल्कि implementation में तय की गई सीमा है, और इस बारे में V8 डेवलपर का जवाब StackOverflow पर मौजूद है.

https://stackoverflow.com/a/54466812/166418

  • Map को स्टोर करने वाला FixedArray अधिकतम 1GB आकार का हो सकता है

  • 64-bit सिस्टम में 1GB / 8B = 2^30 / 2^3 = 2^27 ~= 134M, इसलिए FixedArray में अधिकतम 13.4 करोड़ elements स्टोर किए जा सकते हैं

  • Map को हर entry के लिए 3 elements (Key, value, next bucket link) चाहिए, और bucket collision से बचने के लिए अधिकतम load count 50% तक सीमित है.

→ capacity square number में होनी चाहिए, इसलिए 2^27 / (3 * 2) की गणना में अगले छोटे square तक नीचे लाने पर 2^24 अधिकतम सीमा बनती है