Lo perfilador debo usar para medir el tiempo _real_ (incluyendo la espera de llamadas al sistema) pasar en esta función, no _CPU_ uno

StackOverflow https://stackoverflow.com/questions/3992587

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 @

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top