DEV Community

Cover image for 5 Kesalahan Coding yang Menyebabkan Penurunan Performa
Insight 105
Insight 105

Posted on

5 Kesalahan Coding yang Menyebabkan Penurunan Performa

5 Kesalahan Coding yang Menyebabkan Penurunan Performa

Berikut adalah penjelasan mendalam mengenai kesalahan umum dalam pemrograman beserta contoh kode sebelum dan sesudah perbaikan:

1. Nested Loop Berlebihan (Kompleksitas )

Melakukan perulangan di dalam perulangan membuat waktu eksekusi meningkat secara eksponensial seiring bertambahnya data.

  • Contoh Buruk: Mencari kecocokan di dua array menggunakan loop bersarang.
const users = [...]; // 1000 data
const orders = [...]; // 1000 data
users.forEach(user => {
  orders.forEach(order => {
    if (order.userId === user.id) {
      // Operasi berat
    }
  });
}); // Melakukan 1.000.000 iterasi!

Enter fullscreen mode Exit fullscreen mode
  • Solusi: Gunakan Map atau Hash Table untuk mengubah kompleksitas menjadi .
const orderMap = new Map(orders.map(o => [o.userId, o]));
users.forEach(user => {
  const order = orderMap.get(user.id);
  if (order) { /* Operasi */ }
}); // Hanya sekitar 2000 iterasi.

Enter fullscreen mode Exit fullscreen mode

2. Mengambil Data Berlebihan dari Database

Mengambil semua kolom (SELECT *) saat hanya butuh satu atau dua data akan membebani bandwidth jaringan dan memori server.

  • Contoh Buruk:
SELECT * FROM users WHERE status = 'active';
-- Mengambil foto profil, bio, dan alamat padahal hanya butuh nama.

Enter fullscreen mode Exit fullscreen mode
  • Solusi: Ambil hanya kolom yang diperlukan.
SELECT username, email FROM users WHERE status = 'active';

Enter fullscreen mode Exit fullscreen mode

3. Mengulang Perhitungan yang Sama

Menghitung ulang nilai yang sama di dalam loop atau fungsi yang sering dipanggil akan membuang siklus CPU.

  • Contoh Buruk:
for (let i = 0; i < arr.length; i++) {
  const result = heavyCalculation(data); // Dihitung ulang setiap iterasi
  console.log(arr[i] + result);
}

Enter fullscreen mode Exit fullscreen mode
  • Solusi: Simpan hasil dalam variabel (Caching/Memoization).
const cachedResult = heavyCalculation(data); 
for (let i = 0; i < arr.length; i++) {
  console.log(arr[i] + cachedResult);
}

Enter fullscreen mode Exit fullscreen mode

4. Menggunakan Struktur Data yang Salah

Memilih struktur data yang tidak sesuai dengan kebutuhan operasi (seperti pencarian atau penghapusan) dapat memperlambat aplikasi.

  • Contoh Buruk: Menggunakan Array untuk mengecek keberadaan item yang unik (Linear Search ).
const userIds = [1, 5, 10, ...]; 
if (userIds.includes(500)) { ... } // Harus mengecek satu per satu dari awal

Enter fullscreen mode Exit fullscreen mode
  • Solusi: Gunakan Set atau Hashmap untuk pencarian instan ().
const userIds = new Set([1, 5, 10, ...]);
if (userIds.has(500)) { ... } // Langsung ketemu tanpa looping

Enter fullscreen mode Exit fullscreen mode

5. Logging Berlebihan di Lingkungan Produksi

console.log atau library logging yang sinkron bersifat menghambat (blocking). Jika ada ribuan log per detik, aplikasi akan melambat secara signifikan.

  • Contoh Buruk:
function processData(data) {
  data.forEach(item => {
    console.log("Processing item: ", item.id); // Berbahaya jika data berjumlah jutaan
  });
}

Enter fullscreen mode Exit fullscreen mode
  • Solusi: Hapus log debug atau gunakan level logging (Info, Warn, Error) yang bisa dimatikan di level konfigurasi.
if (process.env.NODE_ENV === 'development') {
  console.log("Debug info");
}

Enter fullscreen mode Exit fullscreen mode

Kesimpulan

Optimasi performa bukan tentang menulis kode yang rumit, melainkan tentang efisiensi. Dengan memilih struktur data yang tepat, membatasi akses data ke database, dan menghindari kalkulasi redundan, aplikasi kamu akan terasa jauh lebih ringan dan responsif bagi pengguna.

Top comments (0)