⊗jsSpOtMm 278 of 294 menu

Optimasi Konsumsi Memori di JavaScript

Semua variabel yang dibuat disimpan di dalam memori RAM komputer. Terkadang penulisan kode tanpa pertimbangan dapat secara drastis meningkatkan konsumsi memori.

Mari kita lihat sebuah contoh. Misalkan kita memiliki tugas untuk mencari jumlah bilangan bulat dari 1 sampai 100000000. Misalkan kita memiliki fungsi yang mengisi array dengan bilangan bulat dari rentang yang ditentukan:

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

Misalkan kita juga memiliki fungsi yang mencari jumlah elemen array:

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

Dengan kombinasi fungsi-fungsi ini kita dapat dengan mudah menyelesaikan tugas yang diberikan:

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

Solusinya menjadi elegan. Namun, di dalamnya ada masalah: solusi itu mengonsumsi jumlah memori RAM yang sangat besar.

Mari kita hitung. Fungsi fillArr membuat array dengan 100000000 angka. Misalkan JavaScript mengalokasikan 2 byte untuk satu angka - maka untuk menyimpan array kita diperlukan 200000000 byte, yaitu sekitar 200 megabyte memori RAM.

Namun sebenarnya, memori RAM yang dibutuhkan akan jauh lebih besar karena dalam JavaScript ada overhead yang sangat besar saat menyimpan array.

Dengan memahami masalahnya, mudah untuk membuat fungsi yang menyelesaikan tugas dan hampir tidak mengonsumsi memori RAM:

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

Mari selesaikan tugas dengan fungsi kita:

let sum = getNumsSum(100000000);

Seorang programmer memiliki tugas untuk mencari jumlah angka yang habis dibagi 7, berada dalam rentang yang ditentukan. Dia menyelesaikannya dengan cara berikut:

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

Jelaskan, apa yang salah dengan kode ini. Ubahlah kode menjadi lebih optimal.

Seorang programmer memiliki tugas untuk mencari jumlah pembagi suatu angka. Dia menyelesaikannya dengan cara berikut:

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);

Jelaskan, apa yang salah dengan kode ini. Ubahlah kode menjadi lebih optimal.

Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak