⊗jsSpOtMm 278 of 294 menu

Optimizimi i Konsumit të Kujtesës në JavaScript

Të gjitha variablat e krijuara ruhen në kujtesën operative të kompjuterit. Ndonjëherë shkrimi i pasjellshëm i kodit mund të rrisë shpejt kujtesën e konsumuar.

Le të shohim një shembull. Le të themi se kemi përpara detyrën për të gjetur shumën e numrave të plotë nga 1 deri në 100000000. Le të themi se kemi një funksion, që mbush një grup me numra të plotë nga një interval i caktuar:

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

Le të themi gjithashtu se kemi një funksion, që gjen shumën e elementeve të një grupi:

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

Me ndihmën e kombinimit të këtyre funksioneve është e lehtë të zgjidhet detyra e parashtruar:

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

Doli një zgjidhje elegante. Megjithatë, në të ka një problem: ajo konsumon një sasi të madhe të kujtesës operative.

Le të llogarisim. Funksioni fillArr krijon një grup me 100000000 numra. Le të themi se JavaScript ndan 2 bajt për një numër - atëherë për të ruajtur grupin tonë do të nevojiten 200000000 bajt, domethënë rreth 200 megabajt kujtesë operative.

Por në fakt, do të nevojitet shumë më e madhe kujtesë operative për shkak të faktit se në JavaScript ka shumë shpenzime të mëdha shtesë gjatë ruajtjes së grupeve.

Duke e kuptuar problemin, është e lehtë të bëhet një funksion, që zgjidh detyrën dhe praktikisht nuk konsumon kujtesë operative:

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

Le ta zgjidhim detyrën me ndihmën e funksionit tonë:

let sum = getNumsSum(100000000);

Para një programisti kishte detyrën për të gjetur numrin e numrave që pjesëtohen pa mbetje me 7, që ndodhen në një interval të caktuar. Ai e zgjidhi atë në mënyrën e mëposhtme:

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

Shpjegoni, çfarë nuk shkon me këtë kod. Rindërtoni kodin në një mënyrë më optimale.

Para një programisti kishte detyrën për të gjetur shumën e pjesëtuesve të një numri. Ai e zgjidhi atë në mënyrën e mëposhtme:

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

Shpjegoni, çfarë nuk shkon me këtë kod. Rindërtoni kodin në një mënyrë më optimale.

Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo