Optimizimi i Operacioneve Ciklike në JavaScript
Edhe një operacion i lehtë, i përsëritur shumë herë në një cikël, mund të konsumojë shumë burime.
Le të shohim një shembull. Le të themi se kemi një grup të caktuar:
let arr = [1, 2, 3, 4, 5, 6];
Le të gjejmë mesataren e elementeve të këtij grupi. Për këtë, duhet gjetur shuma e elementeve dhe pjesëtuar me sasinë e tyre. Le të themi se një programues e ka zgjidhur këtë detyrë në mënyrën e mëposhtme:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Le të shqyrtojmë problemet e këtij zgjidhjeje. Nga ana teknike, kodi punon saktë dhe jep përgjigjen e saktë. Çështja është se matematikisht është e saktë që të pjesëtosh të gjithë shumën me sasinë, ashtu si dhe të pjesëtosh secilin prej kufizave me sasinë.
Megjithatë, lind një problem tjetër. Çështja është se ne do të kryejmë pjesëtim sa herë ka elementë në grupin tonë. Dhe del se ne bëjmë një numër të madh operacionesh të tepërta, sepse pjesëtimin mund ta kishim kryer në fund - një herë, duke pjesëtuar të gjithë shumën e gjetur.
Le të optimizojmë kodin tonë:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);
Optimizoni kodin e mëposhtëm:
for (let i = 1900; i <= 2100; i++) {
let curr = new Date;
let date = new Date(i, curr.getMonth(), curr.getDate());
if (curr.getDay() === date.getDay()) {
console.log(date);
}
}
Optimizoni kodin e mëposhtëm:
let obj = {a: 10, b: 20, c: 30, d: 40, e: 50};
let sum = 0;
for (let key in obj) {
if (String(obj[key])[0] === '1' || String(obj[key])[0] === '2') {
sum += obj[key];
}
}
console.log(sum);