Big O Notation

Adhy Wiranto
2 min readJan 1, 2022

--

Big O membahas mengenai bagaimana melihat gambaran besar dari performance suatu program. Bagaimana jumlah input yang kita berikan memengaruhi performance fungsi program. Apakah itu semakin banyak input peningkatan waktu eksekusi akan meningkat secara linear atau eksponensial?

Setelah mengetahuinya, bagaimana caranya mengoptimalkan program agar lebih efisien.

Javascript memiliki fungsi yang bernamaperformance.now()yang berguna untuk mengetahui seberapa lama sebuah eksekusi kode berjalan.

Terdapat banyak solusi pada satu permasalahan, ada beberapa pertimbangan suatu kode dianggap sebagai yang paling optimal, entah itu dari kecepatan kode tersebut, rendahnya penggunaan memory, dan tingkat readability-nya baik atau tidak.

Permasalahan menentukan kode dengan eksekusi tercepat adalah: setiap mesin/komputer memiliki kemampuan komputasi yang berbeda-beda, bahkan dalam 1 mesin yang sama pun setiap eksekusi kode yang sama dapat terjadi perbedaan timing. Lalu apa solusinya?

Karena kita tidak bisa mengoptimasi di bagian timing, kita bisa optimasi kode di bagian jumlah eksekusinya. Karena banyaknya jumlah kode eksekusi berbanding lurus dengan waktu eksekusinya.

Contohnya kita ingin menjumlahkan angka 1 sampai 6, apa yang kita bisa lakukan? Mungkin kita akan melakukan looping dari angka 1 sampai 6 lalu hasilnya akan ditampilkan ke layar.

function jumlahKeAtas(n) {
let total = 0;
for (let i = 1; i <= n; i++) {
total += i;
}
console.log(total);
}
let t0 = performance.now();
jumlahKeAtas(6);
let t1 = performance.now();
console.log(`Timing: ${t1-t0} Seconds`);

Berdasarkan laptop penulis dengan percobaan 5 kali eksekusi kode di atas hasilnya bervariasi dari 0,144 sampai 0,129 detik.

Memang seperti itu saja sudah cepat, tapi pertanyaannya apa bisa lebih singkat lagi? Lalu bagaimana caranya agar kode lebih sedikit eksekusinya dan juga cepat eksekusinya? Kita bisa menggunakan rumus pemjumlahan: n x ( n + 1 ) / 2.

function jumlahKeAtas(n) {
return n * ( n + 1 ) / 2;
}

let t0 = performance.now();
console.log(jumlahKeAtas(6));
let t1 = performance.now();
console.log(`Timing: ${t1-t0} Seconds`);

Dengan kode di atas berdasarkan laptop penulis, timingnya berubah lebih cepat secara signifikan, antara 0,150 sampai 0,099 detik.

Teman-teman bisa coba di laptop/komputernya masing-masing. Sekian dari pembahasan Big O, terimakasih sudah membaca 😄

--

--