Estoy comparando dos métodos iterativos para invertir matrices cuadradas aleatorias. Dado que las matrices son aleatorias, cada caso de prueba toma diferentes cantidades de iteraciones y diferentes tiempos transcurridos. Mi pregunta es, además del tiempo medio de CPU, el valor medio de las iteraciones tomadas por los dos métodos, información útil para comparar los métodos.
performance
benchmarking
srijan
fuente
fuente
Respuestas:
En general, ambos métodos de comparación de desempeño tienen su lugar.
Comparar el tiempo de la CPU es, en cierto sentido, la métrica más interesante, porque al final del día estás realmente interesado en cuál de los métodos es más rápido. (Pero asegúrese de que los criterios de terminación sean comparables; por ejemplo, que ambos métodos produzcan una aproximación con la misma precisión). El inconveniente es que esto solo le dice qué método (y más importante, qué implementación ) es más rápido en la máquina en la que realizó las pruebas. No hay garantía de que una máquina diferente con una arquitectura o software diferente elegiría al mismo ganador.
La comparación de los números de iteración , por otro lado, es independiente de la máquina, pero puede ser engañosa si los dos métodos tienen iteraciones muy diferentes; en este caso, el método con menos pero más costosas iteraciones podría no ser preferible (por ejemplo, métodos de Newton vs. gradiente para la optimización si solo necesita una precisión muy baja).
Entonces, sí, tiene sentido dar ambos números [1], y lo he visto con frecuencia en publicaciones. También hay una tercera opción:
[1] Definitivamente presentar estadísticas sobre múltiples ejecuciones; si muestra medios, no olvide incluir desviaciones estándar también.
fuente
Encuentro que el número de iteraciones es una métrica engañosa porque sugiere "velocidad" cuando no lo es. Para ver un ejemplo simple de comparación de algunos preacondicionadores diferentes que muestran esta diferencia, consulte aquí: http://www.dealii.org/developer/doxygen/deal.II/step_6.html#Possibilitiesforextensions
fuente
En caso de que no esté claro en las otras respuestas, para qué número de iteraciones son buenos los argumentos big-O.
No es bueno para la velocidad absoluta, porque eso depende del tiempo promedio por iteración, que puede diferir entre los métodos en un factor importante.
Por ejemplo, existe una tendencia a ignorar el costo de calcular los índices de la matriz, y eso puede representar una gran fracción del tiempo de CPU.
AGREGADO: Además, como he señalado en otra parte, por cada invocación del método generalmente hay un costo de configuración. Entonces, si las matrices generalmente no son muy grandes, ese costo de configuración puede en sí mismo representar una gran fracción del tiempo de CPU (de tal manera que eliminarlo supondría una gran diferencia en la velocidad).
fuente