Optimisasi Perulangan Berlebih pada JavaScript
Dalam kode berikut, seorang programmer memeriksa
apakah dalam array terdapat angka 3:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let exists = false;
for (let elem of arr) {
if (elem === 3) {
exists = true;
}
}
console.log(exists);
Apa yang salah dengan solusinya? Sepertinya tidak ada
operasi berlebih yang dilakukan dalam perulangan. Masalahnya,
bagaimanapun, adalah setelah ditentukan
bahwa angka 3 ada dalam array, perulangan
tetap berlanjut hingga akhir array.
Yang paling tidak rasional adalah jika angka 3
ditemukan di suatu tempat di awal array, sedangkan array itu sendiri
panjangnya, katakanlah, 1000 elemen.
Hasilnya adalah seribu iterasi tambahan
yang tidak berguna! Tidak optimal.
Mari optimalkan kode, hentikan perulangan tepat waktu:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let exists = false;
for (let elem of arr) {
if (elem === 3) {
exists = true;
break;
}
}
console.log(exists);
Kode berikut menghitung berapa banyak
elemen array yang perlu dijumlahkan
agar jumlahnya menjadi lebih dari 10.
Lakukan optimisasi:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let sum = 0;
let i = 1;
for (let elem of arr) {
sum += elem;
if (sum <= 10) {
i++;
}
}
console.log(i);
Kode berikut mencetak bilangan genap dari rentang yang ditentukan. Lakukan optimisasi:
for (let i = 0; i <= 100; i++) {
if (i % 2 === 0) {
console.log(i);
}
}
Kode berikut mencetak bilangan
yang habis dibagi 2
dan 3 secara bersamaan. Lakukan optimisasi:
for (let i = 0; i <= 100; i++) {
if (i % 2 === 0 && i % 3 === 0) {
console.log(i);
}
}
Kode berikut mencari semua Jumat
13 di tahun berjalan.
Lakukan optimisasi:
for (let i = 0; i <= 11; i++) {
let curr = new Date;
let last = new Date(curr.getFullYear(), i + 1, 0).getDate();
for (let j = 1; j <= last; j++) {
let date = new Date(curr.getFullYear(), i, j);
if (date.getDate() === 13 && date.getDay() === 5) {
console.log(date);
}
}
}