Pembuatan Profil dengan perf, vtune, dan Sanitizer
Buat profil program dengan perf dan Intel VTune serta temukan bug dengan AddressSanitizer
Pembuatan Profil dengan perf, vtune, dan Sanitizer adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Mengapa Membuat Profil?
Intuisi tentang kinerja biasanya keliru. Buat profil untuk menemukan hambatan nyata—lalu optimalkan.
Linux: perf
perf adalah alat pembuatan profil berbasis sampel dengan overhead rendah yang disertakan dalam Linux. Jalankan pada biner apa pun yang dibangun dengan informasi debug.
g++ -O2 -g main.cpp -o main
perf record ./main
perf reportperf stat
Cetak metrik ringkasan—siklus, instruksi, kegagalan cache, dan kesalahan prediksi percabangan—untuk satu eksekusi.
perf stat -e cycles,instructions,cache-misses,branch-misses ./mainGrafik Api
Ubah data perf menjadi grafik api yang menunjukkan bagian tempat waktu dihabiskan.
perf record -F 99 -g ./main
perf script | stackcollapse-perf.pl | flamegraph.pl > flame.svgmacOS: Instruments
Instruments milik Apple menyediakan pembuatan profil waktu, alokasi, kebocoran, dan banyak lagi. Gratis bersama Xcode.
Windows: VTune Profiler
Intel VTune (gratis untuk penggunaan pribadi) menawarkan analisis mikroarsitektur terperinci—jalur pemrosesan yang terhenti, kegagalan cache, dan blok yang sering dijalankan. Dapat digunakan lintas platform.
Pemeriksa Sanitasi Menemukan Kesalahan
Pemeriksa sanitasi adalah pemeriksa saat program berjalan yang tersedia di clang dan gcc. Kompilasi ulang dengan tanda yang sesuai:
-fsanitize=address—AddressSanitizer untuk kesalahan memori-fsanitize=thread—ThreadSanitizer untuk kondisi balapan data-fsanitize=undefined—Sanitizer untuk UB, luapan bilangan bertanda, dan lain-lain-fsanitize=memory—MSan untuk pembacaan yang belum diinisialisasi
Contoh AddressSanitizer
Menangkap luapan buffer, penggunaan setelah dealokasi, dan dealokasi ganda beserta jejak tumpukan.
g++ -fsanitize=address -g main.cpp
./a.out
# Output points exactly at the bugSaat Kompilasi vs Saat Berjalan
Analisis statis (clang-tidy, cppcheck) menemukan kesalahan tanpa menjalankan program. Pemeriksa sanitasi menemukan kesalahan saat program berjalan. Gunakan keduanya—keduanya menangkap masalah yang berbeda.
Membuat Profil Alokasi
Alokasi memori dinamis lambat. Gunakan perf, massif milik Valgrind, atau Heaptrack untuk menemukan lokasi alokasi yang sering dijalankan dan menguranginya.
Membaca Profil
Fokus pada fungsi teratas dalam profil. Kemudian lihat pohon pemanggilan untuk memahami konteksnya. Perbedaan beberapa persen biasanya tidak layak dioptimalkan.
Pembuatan Profil Berkelanjutan
Untuk produksi, alat pembuatan profil berbasis sampel seperti Pyroscope atau Pixie mengumpulkan data secara berkelanjutan dengan overhead rendah. Temukan kemunduran kinerja sebelum berdampak pada pengguna.
Alur Kerja
Siklus optimasi:
- Lakukan pengukuran untuk mengidentifikasi hambatan
- Rumuskan hipotesis
- Ubah satu hal
- Lakukan pengukuran lagi
Tanpa pengukuran, Anda hanya menebak.
Pemeriksaan Singkat
Tanda kompilator mana yang mengaktifkan AddressSanitizer?
Ringkasan
Buat profil dengan perf (Linux), Instruments (macOS), atau VTune (lintas platform) untuk menemukan hambatan. Gunakan pemeriksa sanitasi untuk menemukan kesalahan memori dan utas sejak dini. Lakukan pengukuran, buat hipotesis, ubah sesuatu, lalu ukur lagi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pembuatan Profil dengan perf, vtune, dan Sanitizer” gratis?
Ya — teks lengkap “Pembuatan Profil dengan perf, vtune, dan Sanitizer” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pembuatan Profil dengan perf, vtune, dan Sanitizer”?
Buat profil program dengan perf dan Intel VTune serta temukan bug dengan AddressSanitizer Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Pembuatan Profil dengan perf, vtune, dan Sanitizer” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Tata Letak Data yang Ramah Cache
- Prediksi Percabangan dan Perulangan Panas
- Pembuatan Profil dengan perf, vtune, dan Sanitizer
- Tolok Ukur Mikro dengan Google Benchmark