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.
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 y .
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.