İçeriğe geç
parazade

Kod Optimizasyonu Nedir?

İngilizce: Code Optimization

Yayın: · Son güncelleme:

Kod Optimizasyonu Nedir? Kısaca

Kod optimizasyonu, bir programın davranışını değiştirmeden daha hızlı çalışmasını, daha az bellek, işlemci ya da ağ kaynağı kullanmasını sağlamak için kodun ve algoritmaların iyileştirilmesidir.

Kod Optimizasyonu nedir?
İçindekiler
  1. Kod optimizasyonu nedir?
  2. Hangi yöntemler kullanılır?
  3. Erken optimizasyon tuzağı

Kod optimizasyonu nedir?

Kod optimizasyonu, aynı sonucu daha az kaynakla elde etmektir. Program aynı girdiye aynı çıktıyı vermeye devam eder, ama bunu daha kısa sürede ya da daha az bellekle yapar. Hedef bazen hız, bazen sunucu maliyeti, bazen de telefonda pil tüketimidir.

Optimizasyon iki seviyede yapılır. Derleyiciler kodu derlerken bir kısmını otomatik yapar. Asıl büyük kazançlar ise geliştiricinin algoritma ve veri yapısı seçimlerinden gelir.

Hangi yöntemler kullanılır?

En etkili iyileştirmeler genellikle algoritmik olanlardır. Varsayımsal bir örnek: 100.000 müşteri kaydı içinde bir e-posta adresini her seferinde listeyi baştan sona tarayarak aramak yavaştır. Aynı veriyi bir hash tablosunda (Python'da set ya da dict) tutmak, aramayı neredeyse anında yapar. Bu fark, kodu satır satır hızlandırmaktan çok daha büyüktür.

Diğer yaygın yöntemler şunlardır:

  • Döngü içinde tekrar tekrar yapılan aynı hesaplamayı döngü dışına almak.
  • Sık kullanılan sonuçları önbelleğe almak.
  • Veritabanından tek tek değil toplu sorgularla veri çekmek.
  • Gereksiz veri kopyalamaktan kaçınmak.

Erken optimizasyon tuzağı

Donald Knuth'a ait olduğu bilinen "erken optimizasyon her kötülüğün köküdür" sözü bu alanın temel uyarısıdır. Henüz yavaşlık sorunu olmayan kodu karmaşık hâle getirmek, okunabilirliği düşürür ve hata riskini artırır.

Doğru sıra şudur: önce kodu doğru ve okunaklı yazın, sonra gerçek kullanım altında ölçün, ardından yalnız ölçümün gösterdiği yavaş noktaları iyileştirin. Her değişiklikten sonra testleri çalıştırın ve kazancı yeniden ölçün.

Sıkça Sorulan Sorular

Kod optimizasyonu ile refactoring arasındaki fark nedir?

Refactoring kodun okunabilirliğini ve yapısını iyileştirmeyi hedefler, performans artışı şart değildir. Optimizasyon ise doğrudan hız ya da kaynak kullanımını iyileştirmeye odaklanır. İkisi de programın davranışını değiştirmemelidir.

Optimizasyon kodun okunabilirliğini bozar mı?

Bozabilir. Bazı hızlandırmalar kodu karmaşık hâle getirir. Bu yüzden yalnız gerçekten gerekli noktalarda yapılmalı ve neden yapıldığı kısa bir yorum satırıyla açıklanmalıdır.

İlgili terimler

Darboğaz(Bottleneck)Darboğaz (bottleneck), bir sistemde kapasitesi en düşük olduğu için tüm sürecin hızını sınırlayan bileşen ya da adımdır. Yazılımda yavaş bir veritabanı sorgusu, yetersiz bellek ya da dar bir ağ bağlantısı darboğaz oluşturabilir.Big O Notasyonu(Big O Notation)Big O notasyonu, bir algoritmanın çalışma süresinin ya da bellek kullanımının girdi büyüdükçe nasıl arttığını ifade eden matematiksel gösterimdir. Algoritmaları donanımdan bağımsız biçimde karşılaştırmayı sağlar.RefactoringRefactoring (yeniden düzenleme), yazılımın dışarıdan görünen davranışını değiştirmeden kodun iç yapısını daha okunur, sade ve bakımı kolay hâle getirmek için yapılan düzenlemelerdir. Yeni özellik eklemek ya da hata düzeltmek değildir.Profilleme(Profiling)Profilleme, kişisel verilerin otomatik yöntemlerle işlenerek bir kişinin ilgi alanları, davranışları, ekonomik durumu, sağlığı veya güvenilirliği gibi özelliklerinin analiz edilmesi ya da tahmin edilmesidir.Sunucu(Server)Sunucu (server), ağ üzerinden başka bilgisayarlara ve cihazlara veri, dosya, web sayfası ya da uygulama hizmeti sağlayan bilgisayar veya yazılımdır. İstek gönderen tarafa istemci denir.Algoritma(Algorithm)Algoritma, belirli bir problemi çözmek ya da bir görevi yerine getirmek için izlenen, sırası ve sonu belli, açık ve uygulanabilir adımlar dizisidir. Bilgisayar programları ve yapay zekâ sistemleri algoritmalar üzerine kuruludur.Küme(Set)Küme (set), programlamada her değeri yalnızca bir kez tutan, sırasız bir veri yapısıdır. Tekrar eden kayıtları ayıklamak ve birleşim, kesişim gibi matematiksel küme işlemleri yapmak için kullanılır.Döngü(Loop)Döngü (loop), programlamada bir kod bloğunu belirli sayıda ya da bir koşul sağlandığı sürece tekrar tekrar çalıştıran yapıdır. En yaygın türleri for ve while döngüleridir.