CodeBlanks Logo Icon CodeBlanks

Optimization

Derleyici optimizasyonlarını öğrenirsin.

Optimization

Optimization, derleyicinin ürettiği kodu daha hızlı veya daha küçük yapmak için dönüştürmesidir. GCC ve Clang'da -O1, -O2, -O3 bayrakları seviyeyi belirler; -O0 optimizasyonu kapatır (hata ayıklama için).

Yaygın optimizasyonlar: constant folding (sabit ifadeleri derleme zamanında hesaplama), dead code elimination (kullanılmayan kodu silme), inlining (fonksiyon gövdesini çağrı yerine koyma), loop unrolling (döngüyü açıp tekrar sayısını azaltma). Optimizasyon derleme süresini uzatır ama çalışma hızını artırır.

Sabit katlama

Constant folding, derleyicinin sabit ifadeleri derleme zamanında hesaplamasıdır. Örnek: constexpr int a = 5; constexpr int b = a * 2; yazdığında, derleyici b'yi derleme zamanında 10 olarak hesaplar; çalıştırılabilir dosyada b doğrudan 10 olarak bulunur.

Bu optimizasyon programı hızlandırır; çünkü hesaplama derleme zamanında biter. constexpr anahtar kelimesi bu garantiyi verir: derleyici bu değerleri derleme zamanında hesaplar. Çalışma zamanında a'yı okumak yoktur; sadece b sabiti kullanılır.

Uygulama constexpr sabit katlama yaz

constexpr int a = 5; ve constexpr int b = a * 2; tanımla. main içinde std::cout << b; yaz.

Başlangıç kodu

main.cpp
#include <iostream>

// a ve b constexpr sabitlerini burada tanımla

int main() {
    // b'yi yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

constexpr int a = 5;
constexpr int b = a * 2;

int main() {
    std::cout << b;
    return 0;
}

Beklenen çıktı

10

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Dizi boyutunu tamamla

Soru
int data[____] = {1, 2, 3};
Cevap
int data[3] = {1, 2, 3};

Açıklama: Üç elemanlı dizi için [3].

2 Bayrağı seviyesine eşle

Kavram Anlamı
-O0 Optimizasyon yok
-O1 Temel optimizasyon
-O2 Standart optimizasyon
-O3 Agresif optimizasyon

3 Hangi optimizasyon `int x = 2 * 3;` ifadesini `int x = 6;`'ya çevirir?

main.cpp
int x = 2 * 3;  // derleme zamanında hesaplanabilir
  • Constant folding Doğru cevap
  • Loop unrolling
  • Inlining
  • Vectorization

Açıklama: Constant folding, sabit ifadeleri derleme zamanında hesaplar.

Uzman bölümündeki tüm dersler