crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
C++ Kod Optimizasyonu: Performansı Zirveye Taşıyın
C++ dünyasında kod yazmak bir sanatsa, o kodu optimize etmek bir mühendislik harikasıdır. C++, "kullanmadığın şeyin bedelini ödemezsin" felsefesi üzerine kuruludur; ancak yanlış teknikler işlemciyi gereksiz yere yorabilir.
1. Gereksiz Kopyalamadan Kaçının (Pass by Reference)
C++'ta nesneleri fonksiyonlara doğrudan gönderdiğinizde, nesnenin tam bir kopyası oluşturulur. Büyük bir std::vector veya std::string kopyalamak ciddi zaman ve bellek kaybıdır.
[]Hatalı:void islemYap(std::string metin)-> Her çağrıda yeni bir kopya oluşturur.
[]Doğru:void islemYap(const std::string& metin)-> Veriye referansla erişir, kopyalama maliyetini sıfıra indirir.
2. Vektörlerde reserve() Kullanımı
std::vector dolduğunda, arka planda daha büyük bir bellek alanı ayırır ve eski elemanları oraya taşır. Eğer vektörün yaklaşık boyutunu biliyorsanız, bu taşınma işlemini engelleyerek hız kazanabilirsiniz.
C++:
std::vector<int> sayilar;
sayilar.reserve(1000); // 1000 elemanlık yer ayır, taşınmayı önle
for(int i=0; i<1000; ++i) {
sayilar.push_back(i);
}
3. Cache Dostu Kod Yazın (Memory Locality)
İşlemciler veriyi RAM'den değil, çok daha hızlı olan L1/L2 Cache üzerinden okumaya çalışır. Veriler bellekte ne kadar ardışık (sıralı) ise, işlemci o kadar az "cache miss" yaşar ve kodunuz o kadar hızlı akar.
İpucu: Bağlı listeler (std::list) yerine her zaman önceliklestd::vectortercih edin. Vektör elemanları bellekte yan yana dizildiği için işlemci onları çok daha hızlı işler.
4. Derleyici Optimizasyon Bayrakları
Kodunuz ne kadar iyi olursa olsun, derleyiciye ne kadar agresif olması gerektiğini söylemelisiniz. Derleme sırasında kullanılan bayraklar devasa farklar yaratır:
| Bayrak | Açıklama | Kullanım Amacı |
|---|---|---|
| -O0 | Sıfır Optimizasyon | Hızlı derleme, kolay hata ayıklama (Debug). |
| -O2 | Dengeli Optimizasyon | Hız ve boyut dengesi (Release sürümü). |
| -O3 | Maksimum Performans | En hızlı çalışma süresi için agresif optimizasyon. |
Sonuç
Optimizasyon yaparken altın kuralı unutmayın: "Önce ölçün, sonra optimize edin." Darboğazın nerede olduğunu bilmeden yapılan her değişiklik kodu karmaşıklaştırmaktan başka işe yaramayabilir.