Qual è il miglior profiler C ++ gratuito per Windows? [chiuso]


224

Sto cercando un profiler per trovare il collo di bottiglia nel mio codice C ++. Vorrei trovare uno strumento di profilazione gratuito, non invadente e valido. Sono uno sviluppatore di giochi e utilizzo PIX per Xbox 360 e l'ho trovato molto buono, ma non è gratuito. Conosco Intel VTune , ma non è neanche gratuito.


VTune sembra essere libero ora: software.intel.com/en-us/vtune . Ho scaricato l'edizione della comunità e fa un ottimo lavoro sulla profilazione del C ++ e sul codice C # gestito
Dr. ABT

1
Come è fuori tema? Gli strumenti di sviluppo sono in argomento per quanto ne so. È basato sull'opinione però.
Nic Szerman,

Risposte:


135

CodeXL ha ora sostituito l' analista di codice AMD 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.



1
Ho provato a lavorarci adesso e non mi è piaciuto per niente. Non riuscivo nemmeno a capire come ottenere il tempo totale% della funzione (comprese le chiamate) che TrueTime poteva fare benissimo 10 anni fa.
Pavel Radzivilovsky,

Ho scritto un adattamento di sleepy che non dipende da wxWidgets ma viene eseguito nella riga di comando. Lo esegui per un periodo di tempo contro un processo in esecuzione e quindi quando lo interrompi, ottieni le statistiche di ciò che il processo stava trascorrendo a fare. Non è intrusivo in quanto non è necessario modificare il codice in alcun modo per usarlo, ma sospende i thread mentre legge gli stack di chiamate. Hai anche bisogno dei file pdb disponibili in modo da poter ottenere un output significativo, ma immagino che si applichi a qualsiasi profiler.
CashCow,

Consiglierei di provare xperf l'ho trovato superiore all'analista di codice AMD.
MW_dev,

1
CodeAnalyst non riceverà più aggiornamenti ad eccezione di correzioni di errori critici. Sono passati a CodeXL. Ecco il link in modo da poter aggiornare la tua risposta. E grazie per avermi fatto conoscere CodeAnalyst / XL, comunque.
Adri CS,

61

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


20
googletest è un framework di unit test. Come lo useresti per eseguire la profilazione?
greatwolf,

Se stai usando un binario di Windows dallo stack gcc, questa è un'ottima scelta: AMD CodeAnalyst non riconosce i simboli gcc su Windows, ma fa molto sonno!
Mike,


17

Esiste un profiler di strumentazione (accurato per le funzioni) per MS VC 7.1 e versioni successive chiamato MicroProfiler. Puoi trovarlo qui (x64) o qui (x86) . Non richiede alcuna modifica o aggiunta al codice ed è in grado di visualizzare le statistiche delle funzioni con chiamanti e chiamate in tempo reale senza la necessità di chiudere l'applicazione / interrompere il processo di profilazione.

Si integra con VisualStudio, quindi puoi abilitare / disabilitare facilmente la profilazione per un progetto. È anche possibile installarlo su una macchina pulita, necessita solo che le informazioni sui simboli siano posizionate insieme all'eseguibile che viene profilato.

Questo strumento è utile quando l'approssimazione statistica da parte di profili di campionamento come Very Sleepy non è sufficiente.

Il confronto approssimativo mostra che batte AQTime (quando viene invocato nella strumentazione, corsa a livello di funzione). Il seguente programma (ottimizzazione completa, inclinazione disabilitata) viene eseguito tre volte più veloce con il micro-profiler che visualizza i risultati in tempo reale rispetto a AQTime semplicemente raccogliendo statistiche:

void f()
{
    srand(time(0));

    vector<double> 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());
}

1
È un profiler facile da usare e superveloce. Solo un problema che non ho risolto è un problema che dopo aver terminato il debug, la finestra del profiler non si chiudeva automaticamente e devi ucciderla tramite Task Manager (senza che non puoi ricompilare il tuo progetto).
Ludek Vodicka,

1
Ho scoperto che dopo aver chiuso la mia app tramite il normale pulsante CHIUDI, anche la finestra del profiler può essere chiusa regolarmente. Ma quando esco dall'app tramite MAIUSC + F5 (interrompi il debug del comando VS), il pulsante di chiusura della finestra del profiler è disabilitato.
Ludek Vodicka,

Non funziona con VS 2015.
Rustyx,

1
Risolto dal 1.1.590. Vedi gli aggiornamenti sulla pagina della Galleria di Visual Studio ( visualstudiogallery.msdn.microsoft.com/… )
Arty,

1
Questo è davvero molto buono! Dovrebbe essere classificato molto più in alto! Super semplice da installare ed eseguire e ti dà la maggior parte di ciò che devi sapere. La mia seconda scelta è Windows Performance Analyzer: geekswithblogs.net/akraus1/archive/2015/04/21/163342.aspx
Steve


7

Una nuova aggiunta è Shiny .

​​​​​


3
Impossibile trovare file binari scaricabili, solo codici sorgente. Non molto conveniente.
Mons.

5

Consiglio vivamente Windows Performance Toolkit (WPT) o XPERF

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

L'uso dell'argomento della riga di comando di stacktrace ha dimostrato di essere uno strumento prezioso per la mia azienda in quanto profila e risolve i colli di bottiglia. Una delle cose più convincenti è 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ù elevato.

I numeri e le statistiche concreti forniti nei registri ETW sono ineguagliabili nei dettagli, ad eccezione del profiler di Visual Studio (2010/2012), che è anche fantastico ma non gratuito AFAIK.

Se non hai mai usato xperf ... non sai cosa ti stai perdendo


1
Beh, so che mi manca l'URL di lavoro sul sito.
Tomáš Zato - Ripristina Monica il

3

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


Solo questo strumento mi ha aiutato a profilare compilato in IIS un'applicazione Web mista (gestita e nativa) in modalità di rilascio.
Mons.

È un peccato che non supportino le persone che cercano di valutare il loro prodotto.
Lucky Luke,

Attualmente offrono una prova di 14 giorni con funzionalità limitate.
Max



0

Ho usato "TrueTime - parte della suite DevPartner di Compuware per anni. È disponibile una [versione gratuita] (è possibile provare Compuware DevPartner Performance Analysis Community Edition.) Disponibile.



0

Puoi usare EmbeddedProfiler, è gratuito sia per Linux che per Windwos.

Il profiler è invadente (per funzionalità) ma non richiede alcuna modifica del codice. Basta aggiungere un flag di compilatore specifico (-finstrument-functios per gcc / MinGW o / GH per MSVC) e collegare la libreria del profiler. Può fornire un albero delle chiamate completo o solo un elenco di funzioni. Ha la sua interfaccia grafica per l'analizzatore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.