C++ Academy · Ders

perf, vtune ve Sanitizer'larla Profil Oluşturma

Programların profilini perf ve Intel VTune ile çıkarın; AddressSanitizer ile hataları yakalayın

3. ders / 415 adım

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 report

perf 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 ./main

Alev 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.svg

macOS: 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 bug

Derleme 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ü:

  1. Darboğazı belirlemek için ölçün
  2. Bir varsayım oluşturun
  3. Tek bir şeyi değiştirin
  4. 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.

Başlamak ücretsiz

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

  1. Önbellek Dostu Veri Düzenleri
  2. Dallanma Tahmini ve Sıcak Döngüler
  3. perf, vtune ve Sanitizer'larla Profil Oluşturma
  4. Google Benchmark ile Mikro Karşılaştırma
← C++ Academy Sayfasına Dön