Lo perfilador debo usar para medir el tiempo _real_ (incluyendo la espera de llamadas al sistema) pasar en esta función, no _CPU_ uno
Pregunta
no lo hace La aplicación cosas calcular, pero no hace archivos i / o, leer, utiliza la red. Quiero perfilador de demostrarlo.
Me esperaba algo así algo así como en Callgrind que las llamadas clock_gettime cada proble.
O como oprofile que interrupciones mi solicitud (mientras se está durmiendo o en espera de socket / archivo / lo que sea) para ver qué hay que hacer.
Quiero cosas como "leer", "conectar", "nanosleep", "enviar" y sobre todo "fsync" ( Y todos sus interlocutores ) para ser audaz (no cosas como cadena o un número funciones que realizan cálculos).
Plataforma: GNU / Linux i386 @
Solución
rápidamente cortó hasta perfilador de muestreo trivial para Linux: http://vi-server.org/vi /simple_sampling_profiler.html
Se añade backtrace(3)
a un archivo en SIGUSR1
, y luego se convierte en fuente anotada.
A medida que se verifica periódicamente el programa, vamos a ver las funciones que se espera para algo.
Y a medida que se acerca la pila, vamos a ver las personas que llaman también.
Además, la gente de respuestas a preguntas similares recomienda Zoom.
Otros consejos
No hay manera real para responder a esta pregunta sin conocer su plataforma y un poco más sobre lo que está tratando de hacer.
Cuando estoy corriendo en una plataforma Intel, me gusta usar la Tiempo contador de marca (RDTSC) . Es difícil de superar resoultion en el rango sub-microsegundo. Acabo de poner una llamada a la misma antes y después de un trozo de código, y comparar la diferencia.