⊗jsSpOtMm 278 of 294 menu

Pengoptimuman Penggunaan Memori dalam JavaScript

Semua pembolehubah yang dicipta disimpan dalam memori RAM komputer. Kadang-kadang penulisan kod tanpa berfikir boleh meningkatkan penggunaan memori dengan mendadak.

Mari kita lihat sebuah contoh. Katakan kita diberi tugas untuk mencari hasil tambah integer dari 1 hingga 100000000. Katakan kita mempunyai satu fungsi yang mengisi array dengan integer dari julat yang diberikan:

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

Katakan kita juga mempunyai fungsi yang mencari hasil tambah elemen array:

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

Dengan gabungan fungsi-fungsi ini, tugas yang diberikan boleh diselesaikan dengan mudah:

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

Penyelesaiannya menjadi elegan. Namun, terdapat satu masalah: ia menggunakan jumlah memori RAM yang sangat besar.

Mari kita kira. Fungsi fillArr mencipta array dengan 100000000 nombor. Katakan JavaScript memperuntukkan 2 bait untuk setiap nombor - maka untuk menyimpan array kita, diperlukan 200000000 bait, iaitu lebih kurang 200 megabait memori RAM.

Tetapi sebenarnya, lebih banyak memori RAM akan diperlukan kerana dalam JavaScript terdapat perbelanjaan tambahan yang sangat besar ketika menyimpan array.

Dengan memahami masalahnya, adalah mudah untuk mencipta fungsi yang menyelesaikan tugas dan hampir tidak menggunakan memori RAM:

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

Mari selesaikan tugas dengan menggunakan fungsi kita:

let sum = getNumsSum(100000000);

Seorang pengaturcara diberi tugas untuk mencari bilangan nombor yang boleh dibahagi tepat dengan 7, berada dalam julat yang diberikan. 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);

Terangkan, apa yang salah dengan kod ini. Ubahsuai kod tersebut kepada versi yang lebih optimum.

Seorang pengaturcara diberi tugas untuk mencari hasil tambah pembahagi suatu nombor. 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);

Terangkan, apa yang salah dengan kod ini. Ubahsuai kod tersebut kepada versi yang lebih optimum.

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