Horizontal profiling: A sampling technique to identify performance regressions - Sandoval Alcocer, Juan (Universidad de Chile, 2017)
Doctor en Ciencias, Mención Computación === Los cambios continuos en el código fuente de un programa pueden inadvertidamente introducir una regresión de rendimiento en tiempo de ejecución. Dichas regresiones se refieren a situaciones donde el rendimiento de un programa se degrada en comparación de versiones anteriores del mismo, aunque la nueva versión funcione correctamente. Ejecutar puntos de referencia en cada versión de un programa es una técnica tradicional utilizada para identificar regresiones en etapas tempranas. A pesar de ser efectiva, esta técnica exhaustiva es difícil de llevar a cabo en la práctica, principalmente por la alta sobrecarga que esta actividad demanda. En esta tesis, realizamos un estudio empírico sobre una variedad de programas, con el fin de evaluar cómo el rendimiento de un programa evoluciona en el tiempo, a medida que es modificado. Guiados por este estudio, proponemos Horizontal Profiling, una técnica de muestreo para inferir si una nueva versión de un programa introduce una variación de rendimiento, usando información de la ejecución de versiones anteriores. El objetivo de Horizontal Profiling es reducir la sobrecarga que requiere monitorear el rendimiento de cada versión, ejecutando los puntos de referencia solo en las versiones que contengan cambios costosos de código fuente. Presentamos una evaluación en la cual aplicamos Horizontal Profiling para identificar regresiones de rendimiento en un número de programas escritos en en el lenguaje de programación Pharo. En base a las aplicaciones que analizamos, encontramos que Horizontal Profiling es capaz de detectar más del 80% de las regresiones de rendimiento, ejecutando los puntos de referencia en menos del 20% de las versiones. Adicionalmente, describimos los patrones identificados durante nuestro estudio empírico, y detallamos cómo abordamos los numerosos desafíos que enfrentamos para completar nuestros experimentos. === Este trabajo ha sido parcialmente financiado por CONICYT a través de la beca CONICYT-PCHA/Doctorado Nacional para extranjeros/2013-63130199, OBJECT PROFILE y LAM RESEARCH