⊗jsSpOtMm 278 of 294 menu

जावास्क्रिप्ट में मेमोरी खपत का अनुकूलन

सभी बनाए गए वेरिएबल कंप्यूटर की रैंडम एक्सेस मेमोरी में संग्रहीत होते हैं। कभी-कभी बिना सोचे-समझे कोड लिखने से मेमोरी की खपत तेजी से बढ़ सकती है।

आइए एक उदाहरण देखें। मान लीजिए कि हमारे सामने 1 से 100000000 तक के पूर्णांकों का योग ज्ञात करने का कार्य है। मान लीजिए कि हमारे पास एक फ़ंक्शन है, जो किसी दिए गए रेंज से सरणी को पूर्णांकों से भरती है:

function fillArr(a, b) { let res = []; for (let i = a; i <= b; i++) { res.push(i); } return res; }

मान लीजिए कि हमारे पास एक फ़ंक्शन भी है, जो सरणी के तत्वों का योग ज्ञात करती है:

function getSum(arr) { let sum = 0; for (let elem of arr) { sum += elem } return sum; }

इन फ़ंक्शनों के संयोजन से दिए गए कार्य को आसानी से हल किया जा सकता है:

let sum = getSum(fillArr(1, 100000000));

हल सुरुचिपूर्ण बन गया। हालाँकि, इसमें एक समस्या है: यह भारी मात्रा में रैंडम एक्सेस मेमोरी की खपत करता है।

आइए गणना करें। फ़ंक्शन fillArr 100000000 संख्याओं वाली एक सरणी बनाता है। मान लें कि जावास्क्रिप्ट एक संख्या के लिए 2 बाइट आवंटित करता है - तब हमारी सरणी को संग्रहीत करने के लिए 200000000 बाइट की आवश्यकता होगी, यानी लगभग 200 मेगाबाइट रैंडम एक्सेस मेमोरी।

लेकिन वास्तव में, रैंडम एक्सेस मेमोरी की आवश्यकता इससे कहीं अधिक होगी क्योंकि जावास्क्रिप्ट में सरणी को संग्रहीत करते समय ओवरहेड बहुत अधिक होता है।

समस्या को समझते हुए, एक ऐसा फ़ंक्शन बनाना आसान है जो कार्य को हल करता है और व्यावहारिक रूप से रैंडम एक्सेस मेमोरी की खपत नहीं करता:

function getNumsSum(max) { let sum = 0; for (let i = 1; i <= max; i++) { sum += i; } return sum; }

अपने फ़ंक्शन से कार्य को हल करें:

let sum = getNumsSum(100000000);

एक प्रोग्रामर के सामने दिए गए अंतराल में 7 से बिना किसी शेषफल के विभाजित होने वाली संख्याओं की संख्या ज्ञात करने का कार्य था। उसने इसे निम्नलिखित तरीके से हल किया:

let arr = []; for (let i = 0; i <= 1000; i++) { if (i % 7 == 0) { arr.push(i); } } console.log(arr.length);

समझाएं कि इस कोड में क्या गलत है। कोड को अधिक इष्टतम बनाएं।

एक प्रोग्रामर के सामने किसी संख्या के भाजक का योग ज्ञात करने का कार्य था। उसने इसे निम्नलिखित तरीके से हल किया:

function getDivisors(num) { let res = []; for (let i = 1; i <= num; i++) { if (num % i === 0) { res.push(i); } } return res; } function getSum(arr) { let sum = 0; for (let elem of arr) { sum += elem } return sum; } let sum = getSum(getDivisors(320)); console.log(sum);

समझाएं कि इस कोड में क्या गलत है। कोड को अधिक इष्टतम बनाएं।

हिन्दी
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
हम साइट के कार्य, विश्लेषण और व्यक्तिगतकरण के लिए कुकीज़ का उपयोग करते हैं। डेटा प्रसंस्करण गोपनीयता नीति के अनुसार किया जाता है।
सभी स्वीकार करें कॉन्फ़िगर करें अस्वीकार करें