¿Hay algún estándar para comparar los tiempos de ejecución experimentalmente?


10

Mi situación

Estoy escribiendo un documento que presenta un módulo de software que desarrollé y quiero comparar su tiempo de ejecución con otros módulos para la misma tarea. Soy consciente de los inconvenientes de los experimentos en tiempo de ejecución , pero suponga que dado que no hay forma de evitarlo en mi caso. (Puedo y deduzco algunas propiedades teóricamente, pero no es suficiente para todo).

Los escenarios específicos que quiero usar para la evaluación comparativa tienen dos parámetros: la complejidad  del problema y una semilla aleatoria  que determina el problema detallado. Principalmente quiero mostrar la dependencia de  . Según las investigaciones preliminares y la teoría, la influencia de en el tiempo de ejecución es menor o insignificante. Una sola tarea tarda como máximo diez minutos en completarse.norternorter

Pregunta real

Estoy buscando algún procedimiento comúnmente aceptado o publicado para realizar tales experimentos o al menos una lista de dificultades comunes (idealmente publicado).

Lo que encontré hasta ahora

Nada. Las búsquedas en Internet arrojan todo tipo de resultados no relacionados, pero es posible que no esté utilizando la terminología correcta. Incluir el mínimo de palabras clave , que sé que es un buen estándar (ver más abajo), tampoco ayudó.

Como lo haría

  • Ejecute todos los experimentos en la misma máquina con software potencialmente interferente, como una GUI deshabilitada en la medida de lo posible.

  • Someter a todos los módulos a la misma selección de escenarios, es decir, el mismo norter .

  • Para cada escenario, pruebe los diferentes módulos directamente uno detrás del otro en orden aleatorio. En otras palabras, el bucle sobre los diferentes módulos es el más interno. Esto debería evitar sesgos en los diferentes módulos debido a fluctuaciones lentas del rendimiento de la máquina (por ejemplo, debido a cambios de temperatura). El orden aleatorio debe evitar sesgos a través de efectos tales como el almacenamiento en caché o un módulo que siempre se prueba después del mismo.

  • Para cada , tome el tiempo de ejecución mínimo en varios escenarios con diferentes semillas como punto de referencia. Esto debería evitar sesgos en los diferentes módulos debido a las fluctuaciones de corto plazo del rendimiento de la máquina que hacen que las ejecuciones individuales sean excepcionalmente malas.norte


Podría ayudar a explicar su razonamiento por qué piensa "no hay forma de evitarlo en mi caso". Pero, por supuesto, probablemente como una pregunta separada y enlace allí porque esta pregunta está suficientemente enfocada como está.
Apiwat Chantawibul

@Billiska: No estoy exactamente segura de lo que quieres que haga. ¿Por qué debería explicar mi razonamiento para un enfoque experimental en una pregunta separada? No tengo ninguna pregunta al respecto.
Wrzlprmft

Tengo que estar en desacuerdo con que tomes el tiempo de ejecución mínimo de los experimentos repetidos. Parece que piensas que puede haber un outliner hacia arriba solamente. ¿Sería posible tener también un outliner hacia abajo? Es más típico examinar múltiples estadísticas al mismo tiempo, p. Ej., Media, mediana, máx. Quién sabe, pueden mostrar algo que no esperaba. Es un experimento empírico después de todo.
Apiwat Chantawibul

2
Esto es muy amplio; se pueden escribir libros sobre el tema, por ejemplo, "Una guía para algoritmos experimentales" de McGeoch. Incluso se podría decir que está preguntando: "¿Hay algún estándar para hacer ciencia?". Así que no estoy seguro de que esto tenga un alcance razonable. ¿Tienes preguntas más específicas?
Raphael

Respuestas:


2

"Una guía para los algoritmos experimentales" de CC McGeoch es una buena referencia para

  • cómo configurar experimentos en algoritmos,
  • cómo interpretar y usar resultados, y
  • cómo iterar hacia resultados más significativos si es necesario.

2

Además del tiempo transcurrido para cada ejecución, informe segundos del modo de usuario y sistema, y ​​paquetes de IP totales y E / S de disco totales, aunque solo sea para verificar que algunos números sean consistentemente "bajos" y tengan un impacto insignificante en el tiempo transcurrido.

En https://wiki.freebsd.org/BenchmarkAdvice PHK y otros ofrecen buenos consejos, incluidos

Use ministat para ver si sus números son significativos. Considere comprar "Guía de dibujos animados para estadísticas"

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.