Pertanyaan Apa alat profil favorit Anda (untuk C ++) [tertutup]


Sejauh ini, saya hanya menggunakan Rational Quantify. Saya telah mendengar hal-hal hebat tentang VTune Intel, tetapi belum pernah mencobanya!

Edit: Saya kebanyakan mencari perangkat lunak yang akan memainkan kode, karena saya kira itu tentang satu-satunya cara untuk mendapatkan hasil yang sangat baik.


Lihat juga:

Apa saja profiler yang baik untuk C ++ asli di Windows?


75
2017-08-25 19:09


asal


Jawaban:


Untuk pengembangan linux (meskipun beberapa alat ini mungkin bekerja pada platform lain). Ini adalah dua nama besar yang saya tahu, ada banyak yang lebih kecil yang belum terlihat perkembangan aktif dalam beberapa saat.


31
2017-08-25 19:32



Untuk Linux:   Google Perftools

  • Lebih cepat dari valgrind (namun, tidak begitu berbutir halus)
  • Tidak perlu instrumentasi kode
  • Output grafis yang bagus (-> kcachegrind)
  • Apakah profil-memori, cpu-profiling, pengecekan-kebocoran

24
2017-09-16 08:22



Satu-satunya pengalaman saya profiling C + + kode dengan AQTime oleh AutomatedQA (sekarang Perangkat Lunak SmartBear). Ini memiliki beberapa jenis profiler built in (kinerja, memori, menangani Windows, pelacakan pengecualian, analisis statis, dll), dan instrumen kode untuk mendapatkan hasil.

Saya senang menggunakannya - selalu menyenangkan menemukan titik-titik di mana perubahan kecil dalam kode dapat membuat peningkatan kinerja yang dramatis.


6
2017-08-25 19:23



MENURUT OPINI SAYA, sampling menggunakan debugger adalah metode terbaik. Yang Anda butuhkan hanyalah IDE atau debugger yang memungkinkan Anda menghentikan program. Ini kuku masalah kinerja Anda bahkan sebelum Anda mendapatkan profiler diinstal.


6
2017-11-05 00:33



Saya telah menggunakan Glowcode secara luas di masa lalu dan tidak memiliki apa pun kecuali pengalaman positif dengannya. Integrasi Visual Studio-nya benar-benar bagus, dan itu adalah profiler yang paling efisien / intuitif yang pernah saya gunakan (bahkan dibandingkan dengan profiler untuk kode yang dikelola).

Jelas, itu tidak berguna jika Anda tidak menjalankan Windows, tetapi pertanyaannya membuat tidak jelas bagi saya apa persyaratan Anda.


5
2017-08-25 19:27



Profiler di Visual Studio 2008 sangat bagus: cepat, mudah digunakan, jelas dan terintegrasi dengan baik dalam IDE.


5
2017-09-22 07:18



Saya belum pernah melakukan profil sebelumnya. Kemarin saya memprogram kelas ProfilingTimer dengan jadwal statis (peta <std :: string, long long>) untuk penyimpanan waktu.

Konstruktor menyimpan tick awal, dan destructor menghitung waktu yang telah berlalu dan menambahkannya ke peta:

ProfilingTimer::ProfilingTimer(std::string name)
 : mLocalName(name)
{
 sNestedName += mLocalName;
 sNestedName += " > ";

 if(sTimetable.find(sNestedName) == sTimetable.end())
  sTimetable[sNestedName] = 0;

 mStartTick = Platform::GetTimerTicks();
}

ProfilingTimer::~ProfilingTimer()
{
 long long totalTicks = Platform::GetTimerTicks() - mStartTick;

 sTimetable[sNestedName] += totalTicks;

 sNestedName.erase(sNestedName.length() - mLocalName.length() - 3);
}

Di setiap fungsi (atau {blok}) yang saya ingin profil saya perlu menambahkan:

ProfilingTimer _ProfilingTimer("identifier");

Baris ini agak tidak praktis untuk menambahkan semua fungsi yang ingin saya buat karena saya harus menebak fungsi mana yang membutuhkan banyak waktu. Tetapi berfungsi dengan baik dan fungsi cetak menunjukkan waktu yang dikonsumsi dalam%.

(Apakah ada orang lain yang bekerja dengan "profil buatan sendiri" yang mirip? Atau apakah itu hanya bodoh? Tapi itu menyenangkan! Adakah yang punya saran perbaikan?

Apakah ada semacam auto-menambahkan garis ke semua fungsi?)


5
2017-11-20 14:33



oprofile, tanpa keraguan; yang sederhana, dapat diandalkan, melakukan pekerjaan, dan dapat memberikan segala macam kerusakan data yang bagus.


4
2017-09-16 08:24