Para Windows, probé AMD Codeanalyst, Intel VTune y el generador de perfiles en Visual Studio Team Edition.
Codeanalyst tiene errores (se bloquea con frecuencia) y en mi código, sus resultados a menudo son inexactos. Su interfaz de usuario no es intuitiva. Por ejemplo, para llegar a la pantalla de la pila de llamadas en los resultados del perfil, debe hacer clic en la pestaña "Procesos", luego hacer clic en el nombre de archivo EXE de su programa, luego hacer clic en un botón de la barra de herramientas con las letras minúsculas "CSS". Pero es un programa gratuito, por lo que también puede probarlo y funciona (con menos funciones) sin un procesador AMD.
VTune ($ 700) tiene una interfaz de usuario terrible en mi opinión ; en un programa grande, es difícil encontrar el árbol de llamadas particular que desea, y solo puede mirar un "nodo" en un programa a la vez (una función con sus llamadores y destinatarios inmediatos); no puede ver un árbol de llamadas. Hay una vista de gráfico de llamadas, pero no pude encontrar una manera de hacer que los tiempos de ejecución relativos aparezcan en el gráfico. En otras palabras, las funciones en el gráfico se ven iguales independientemente de cuánto tiempo se dedicó a ellas; es como si hubieran perdido totalmente el sentido de la creación de perfiles.
El generador de perfiles de Visual Studio tiene la mejor GUI de los tres, pero por alguna razón no puede recopilar muestras de la mayoría de mi código (las muestras solo se recopilan para algunas funciones en todo mi programa C ++). Además, no pude encontrar un precio o una forma de comprarlo directamente; pero viene con la suscripción a MSDN de mi empresa. Visual Studio admite código administrado, nativo y mixto; No estoy seguro de los otros dos perfiladores en ese sentido.
En conclusión, ¡todavía no conozco un buen perfilador! Me aseguraré de revisar las otras sugerencias aquí.