Pengoptimuman Operasi Berkitar dalam JavaScript
Bahkan operasi ringan, yang diulang berkali-kali dalam gelung, boleh mengambil banyak sumber.
Mari kita lihat contoh. Katakan kita mempunyai satu array:
let arr = [1, 2, 3, 4, 5, 6];
Mari cari purata bagi elemen array ini. Untuk melakukan ini, anda perlu mencari jumlah elemen dan bahagikannya dengan kuantiti. Katakan seorang pengaturcara telah menyelesaikan masalah ini dengan cara berikut:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Mari kita pertimbangkan masalah penyelesaian sedemikian. Dari segi teknikal, kod berfungsi dengan betul dan memberikan jawapan yang betul. Hakikatnya adalah bahawa secara matematik adalah betul sama ada untuk membahagikan keseluruhan jumlah dengan kuantiti, atau untuk membahagikan setiap sebutan dengan kuantiti.
Walau bagaimanapun, masalah lain timbul. Masalahnya adalah kita akan melaksanakan pembahagian sebanyak kali yang ada elemen dalam array kita. Dan ternyata kita melakukan banyak operasi berlebihan, kerana pembahagian boleh dilakukan pada akhir - sekali, dengan membahagikan keseluruhan jumlah yang ditemui.
Mari kita optima kod kami:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);
Optimumkan kod berikut:
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);
}
}
Optimumkan kod berikut:
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);