⊗jsSpOtMm 278 of 294 menu

JavaScript-те жадтық тұтынуды оңтайландыру

Жасалған барлық айнымалылар компьютердің жадтық жадында сақталады. Кейде ойланбастан код жазу тұтынылатын жадты кенеттен арттыруы мүмкін.

Мысалға қарайық. Бізге 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 саннан тұратын массив жасайды. JavaScript әр санға 2 байт бөледі делік - онда біздің массивті сақтау үшін 200000000 байт, яғни шамамен 200 мегабайт жадтық жады қажет болады.

Бірақ шын мәнінде, JavaScript-те массивті сақтау кезінде өте көп үстеме шығындар болғандықтан, әлдеқайда көп жадтық жады қажет болады.

Мәселені түсініп, тапсырманы шешетін және іс жүзінде жадтық жады тұтынбайтын функцияны жасау оңай:

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çaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართული한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау