⊗jsSpOtRHO 271 of 294 menu

Raskaiden operaatioiden toiston optimointi JavaScriptissä

Edellisessä oppitunnissa funktioiden toistuvat kutsut veivät todellisuudessa hyvin vähän aikaa ja meidän optimointimme säästi ei kovin paljon. Kuitenkin, kaikki on paljon huonommin, jos teemme useita kertoja kutsun "raskaille" funktioille, jotka suorittavat tarpeeksi pitkän ajan.

Oletetaan esimerkiksi, että meillä on funktio, joka löytää luvun jakajat:

function getDivisorsSum(num) { let res = 0; for (let i = 1; i <= num; i++) { if (num % i === 0) { res += i; } } return res; }

On ilmeistä, että tämä funktio on tarpeeksi "raskas". Siksi huono idea olisi kirjoittaa tällainen koodi:

let num = 123456; if (getDivisorsSum(num) >= 10 && getDivisorsSum(num) <= 100) { console.log('+++'); } else { console.log('---'); }

Parempi on tietysti suorittaa "raskas" operaatio yksi kerta ja tulos tallentaa muuttujaan, ja sitten käyttää tätä muuttujaa tarvittavissa paikoissa:

let num = 123456; let sum = getDivisorsSum(num); if (sum >= 10 && sum <= 100) { console.log('+++'); } else { console.log('---'); }

Optimoi alla oleva koodi:

let num = 1233456789; if (getSumSquare(num) >= 10 && getSumSquare(num) <= 100) { console.log('+++'); } else { console.log('---'); } function getSumSquare(num) { let digits = String(num).split(''); let sum = 0; for (let digit of digits) { sum += digit ** 2; } return sum; }
Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää