perf, vtune ve Sanitizer'larla Profil Oluşturma
Programların profilini perf ve Intel VTune ile çıkarın; AddressSanitizer ile hataları yakalayın
perf, vtune ve Sanitizer'larla Profil Oluşturma, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
Neden Profil Oluşturmalı?
Performans hakkındaki sezgiler genellikle yanlıştır. Gerçek darboğazları bulmak için profil oluşturun; ardından eniyileyin.
Linux: perf
perf, Linux ile birlikte gelen, ek yükü düşük bir örneklemeli profil oluşturucudur. Hata ayıklama bilgileriyle oluşturulmuş herhangi bir ikili dosyada çalıştırabilirsiniz.
g++ -O2 -g main.cpp -o main
perf record ./main
perf reportperf stat
Bir çalıştırma için özet ölçümleri (çevrimler, yönergeler, önbellek kaçırmaları ve dallanma yanlış tahminleri) yazdırır.
perf stat -e cycles,instructions,cache-misses,branch-misses ./mainAlev Grafikleri
perf verilerini, zamanın nerede harcandığını gösteren bir alev grafiğine dönüştürür.
perf record -F 99 -g ./main
perf script | stackcollapse-perf.pl | flamegraph.pl > flame.svgmacOS: Instruments
Apple'ın Instruments aracı zaman profili oluşturma, bellek ayırmaları, sızıntılar ve daha fazlasını sağlar. Xcode ile ücretsiz gelir.
Windows: VTune Profil Oluşturucusu
Intel VTune (kişisel kullanım için ücretsiz), işlem hattı duraklamaları, önbellek kaçırmaları ve sıcak bloklar gibi ayrıntılı mikro mimari çözümlemeler sunar. Platformlar arasıdır.
Denetleyiciler Hataları Yakalar
Çalışma zamanı denetleyicileri clang ve gcc içine yerleştirilmiştir. Uygun seçenekle yeniden derleyin:
-fsanitize=address— Bellek hataları için AddressSanitizer-fsanitize=thread— Veri yarışları için ThreadSanitizer-fsanitize=undefined— İşaretli taşmalar vb. için UB denetleyicisi-fsanitize=memory— Başlatılmamış okumalar için MSan
AddressSanitizer Örneği
Yığın izleriyle arabellek taşmalarını, serbest bırakılmış belleği kullanma durumlarını ve çift serbest bırakmaları yakalar.
g++ -fsanitize=address -g main.cpp
./a.out
# Output points exactly at the bugDerleme Zamanı ve Çalışma Zamanı
Statik çözümleme (clang-tidy, cppcheck), çalıştırmadan hata bulur. Denetleyiciler çalışma zamanı hatalarını bulur. İkisini de kullanın; farklı sorunları yakalarlar.
Bellek Ayırmaları için Profil Oluşturma
Öbek bellek ayırmaları yavaştır. Sıcak bellek ayırma noktalarını bulup azaltmak için perf, Valgrind'in massif aracı veya Heaptrack kullanın.
Profilleri Okuma
Profildeki en üst işlevlere odaklanın. Ardından bağlamı anlamak için çağrı ağacına bakın. Burada ve orada görülen birkaç puanlık fark genellikle eniyilemeye değmez.
Sürekli Profil Oluşturma
Üretim ortamında Pyroscope veya Pixie gibi örneklemeye dayalı profil oluşturucular, düşük ek yükle sürekli veri toplar. Gerilemeleri kullanıcıları etkilemeden önce yakalayın.
İş Akışı
Eniyileme döngüsü:
- Darboğazı belirlemek için ölçün
- Bir varsayım oluşturun
- Tek bir şeyi değiştirin
- Yeniden ölçün
Ölçüm yapmadan yalnızca tahminde bulunursunuz.
Hızlı Kontrol
AddressSanitizer'ı hangi derleyici seçeneği etkinleştirir?
Özet
Darboğazları bulmak için perf (Linux), Instruments (macOS) veya VTune (platformlar arası) ile profil oluşturun. Bellek ve iş parçacığı hatalarını erkenden yakalamak için denetleyicileri kullanın. Ölçün, varsayım oluşturun, değiştirin ve yeniden ölçün.
Yapay zeka eğitmeniyle C++ öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 51
- Dersler
- 203
Sıkça Sorulan Sorular
“perf, vtune ve Sanitizer'larla Profil Oluşturma” dersi ücretsiz mi?
Evet — “perf, vtune ve Sanitizer'larla Profil Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“perf, vtune ve Sanitizer'larla Profil Oluşturma” dersinde ne öğreneceğim?
Programların profilini perf ve Intel VTune ile çıkarın; AddressSanitizer ile hataları yakalayın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“perf, vtune ve Sanitizer'larla Profil Oluşturma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Önbellek Dostu Veri Düzenleri
- Dallanma Tahmini ve Sıcak Döngüler
- perf, vtune ve Sanitizer'larla Profil Oluşturma
- Google Benchmark ile Mikro Karşılaştırma