Qual è il miglior profiler gratuito per C ++ per Windows?

Sto cercando un profiler per trovare il collo di bottiglia nel mio codice C ++. Mi piacerebbe trovare uno strumento gratuito, non intrusivo e di buona profilazione. Sono uno sviluppatore di giochi e utilizzo PIX per Xbox 360 e l’ho trovato molto utile, ma non è gratuito. Conosco Intel VTune , ma non è neanche gratuito.

CodeXL ha sostituito l’ analista di codice AMD di End Of Line ed entrambi sono gratuiti, ma non così avanzati come VTune. C’è anche Sleepy , che è molto semplice, ma fa il lavoro in molti casi.

Very Sleepy è un profiler CPU C / C ++ per sistemi Windows (gratuito).
CppCheck è un profiler CPU C / C ++ statico per sistemi Windows (gratuito).

Proffy è piuttosto cool: http://pauldoo.com/proffy/

Disclaimer: ho scritto questo.

Esiste un profiler per strumentazione (funzione accurata) per MS VC 7.1 e superiore chiamato MicroProfiler. Puoi ottenerlo qui (x64) o qui (x86) . Non richiede alcuna modifica o aggiunta al codice ed è in grado di visualizzare statistiche sulle funzioni con chiamanti e chi si trova in tempo reale senza la necessità di chiudere l’applicazione / interrompere il processo di profilazione.

Si integra con VisualStudio, quindi puoi facilmente abilitare / disabilitare la creazione di profili per un progetto. È anche ansible installarlo sulla macchina pulita, basta che le informazioni sul simbolo siano posizionate insieme all’eseguibile che viene profilato.

Questo strumento è utile quando l’approssimazione statistica da profilatori di campionamento come Very Sleepy non è sufficiente.

Il confronto approssimativo mostra che batte AQTime (quando è invocato in strumentazione, run a livello di funzione). Il seguente programma (ottimizzazione completa, inlining disabilitato) viene eseguito tre volte più velocemente con il micro-profiler che visualizza i risultati in tempo reale, piuttosto che con AQTime che raccoglie semplicemente le statistiche:

void f() { srand(time(0)); vector v(300000); generate_n(v.begin(), v.size(), &random); sort(v.begin(), v.end()); sort(v.rbegin(), v.rend()); sort(v.begin(), v.end()); sort(v.rbegin(), v.rend()); } 

Microsoft ha Windows Performance Toolkit .

Richiede Windows Vista, Windows Server 2008 o Windows 7.

Una nuova aggiunta è lucida .

Consiglio vivamente Windows Performance Toolkit (WPT) o XPERF

Lo strumento da riga di comando della riga di comando xperf registra i registri di Event Tracing per Windows (ETW) che possono essere analizzati utilizzando lo strumento GUI xperfview.

L’ uso della discussione da riga di comando di stacktrace si è dimostrato uno strumento prezioso per la mia azienda in quanto fornisce profili e soluzioni ai colli di bottiglia. Una delle cose più interessanti è che il WPT può essere installato in qualsiasi ambiente anche sul venerabile Windows XP .

Su Windows 8, Windows Performance Analyzer porta xperf a un livello ancora più alto.

I numeri e le statistiche rigidi forniti nei registri ETW sono senza paragoni in dettaglio, ad eccezione di Visual Studio Profiler (2010/2012) che è anche ottimo ma non gratuito AFAIK.

Se non hai mai usato xperf … non sai cosa ti manca

Uso AQTime, è uno dei migliori strumenti di profilazione che abbia mai usato. Non è gratuito ma puoi ottenere una prova di 30 giorni, quindi se pianifichi di ottimizzare e profilare un solo progetto e 30 giorni sono sufficienti per te allora ti consiglio di utilizzare questa applicazione. ( http://www.automatedqa.com/downloads/aqtime/index.asp )

Per favore prova il mio profiler, chiamato cRunWatch. Sono solo due file, quindi è facile da integrare con i tuoi progetti e richiede l’aggiunta di una sola riga per strumentare un pezzo di codice.

http://ravenspoint.wordpress.com/2010/06/16/timing/

Richiede la libreria Boost.

Ho usato “TrueTime – parte della suite DevPartner di Compuware per anni .. C’è una [versione gratuita] (puoi provare Compuware DevPartner Performance Analysis Community Edition.) Disponibile.

Ho usato Luke Stackwalker e ha fatto il lavoro per il mio progetto Visual Studio.

Altri progetti interessanti sono:

  • Proffy
  • Dyninst

Io uso VSPerfMon, che è il Visual Studio Profiler StandAlone. Ho scritto uno strumento GUI per aiutarmi a eseguirlo e guardare i risultati.

http://code.google.com/p/vsptree/

Puoi usare EmbeddedProfiler, è gratis per Linux e Windwos.

Il profiler è invadente (per funzionalità) ma non richiede modifiche al codice. Basta aggiungere un flag di compilatore specifico (-finstrument-functios per gcc / MinGW o / GH per MSVC) e colbind la libreria del profiler. Può fornire un albero di chiamata completo o solo un elenco di funzioni. Ha la propria interfaccia grafica per l’analizzatore.