2010-02-03 16 views
13

Tengo un proceso de servicio, y quiero usar contadores de rendimiento para publicar el tiempo promedio que se tarda en completar las tareas. Estoy usando el contador AverageTimer32 para hacer esto.Cálculo de promedios con contadores de rendimiento

Casi funciona de la manera que quiero, pero no del todo: cuando incremente el contador, brevemente alcanzará el valor que espero (mirando en el Monitor de rendimiento), pero luego volverá a cero.

Por lo tanto, el contador es cero, ejecuto una tarea, la tarea finaliza, el contador se reactiva brevemente (al valor correcto), pero luego casi de inmediato vuelve a cero.

Estoy usando el contador AverageTimer32 con AverageBase como denominador. Incremento el AverageBase en 1 cada vez que comienzo una tarea, y luego incremente el AverageTimer32 por el número de tics para completar cada vez que termine la tarea. ¿Alguien puede darme un empujón?

Respuesta

16

Resulta que la razón por la que no pude hacer lo que quería era que ninguno de los tipos de contador de rendimiento permite calcular automáticamente un promedio continuo. (los contadores "promedio", calcula un promedio basado en ese momento en el tiempo, como "bytes por segundo").

Quería un promedio continuo. Entonces, utilicé el tipo de contador de rendimiento RawFraction.

Hubo un problema con ese método: la fórmula divide el resultado entre 100 para producir un porcentaje, y yo quería un número sin formato (operaciones promedio completadas por segundo).

Por lo tanto, incrementé el denominador de la fracción en 100 por cada 1 operación (compensando el cálculo del porcentaje).

Mi resultado: ahora puedo mostrar cuánto tarda, en promedio, para que mi servicio complete una tarea. Si mi servicio no está ocupado, el promedio permanece constante para que pueda ver la tendencia a largo plazo del rendimiento de mi servicio.

+0

Tuve el mismo problema, he intentado utilizar AverageCount64, AverageTime32 pero fue en vano. Gracias por responder a su propia pregunta y proporcionar la explicación. –

+0

+1 Esto funcionó para mí también. ¡Excelente! –

Cuestiones relacionadas