Optimization
- C++ kursu
- Uzman
- Ders 41/47
- 5 dk
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
#include <iostream>
// a ve b constexpr sabitlerini burada tanımla
int main() {
// b'yi yazdır
return 0;
}Örnek çözüm
#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
int data[____] = {1, 2, 3};
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?
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.