Estoy trabajando con la optimización de un software y quiero medir el rendimiento. Así que actualmente estoy simulando una plataforma ARM con OVP (plataforma virtual abierta) y obtengo las estadísticas como tiempo de simulación e instrucciones simuladas.¿Cómo medir el rendimiento de ARM?
Mi pregunta es, ¿por qué las instrucciones simuladas son diferentes cada vez que ejecuto el software (diferente, pero muy cerca)? ¿No debería ser lo mismo cada vez? Si no es así, el software que escribo en C se compilará en instrucciones de ensamblador ARM, y cada vez que se ejecute el programa, las instrucciones simuladas serán ¿cuántas veces se ejecutarán estas instrucciones de ensamblador ARM? Debería ser lo mismo cada vez?
¿Cómo debo medir el rendimiento? Toma 10 muestras de instrucciones simuladas y obtén el promedio?
Algunos sistemas pueden estar dentro de un tiempo de reloj del dispositivo de medición para cada ciclo, para algunos sistemas hay dinámicas involucradas que no permiten que eso suceda. Y podría estar relacionado con lo que estás haciendo de todos modos. ¿Estás ejecutando incrustado o encima de un sistema operativo? ¿Qué tipo de software está hablando con periféricos, a través de una red, etc.? –
el número de instrucciones puede variar dependiendo de lo que esté haciendo, digamos que tiene un bucle de 20 instrucciones de sondeo para algún evento o periférico para finalizar algo. Si de una carrera a la siguiente, simplemente se pierde un evento y tiene que ejecutar nuevamente el ciclo, hay una diferencia de 20 instrucciones. Haga que eso ocurra varias veces por simulación y eso puede agregar diferencias notables. Si adaptas el código y la prueba a algo que nunca puede confiar en eventos externos y que por diseño va a ejecutar la misma ruta, entonces sí, debería ser igual cada vez. –
¿Qué tipo de rendimiento estás tratando de medir? CPU, memoria, IO, red? Si hablamos de CPU, puede que merezca la pena intentarlo con bogomips. – PhilW