La perforación de bucles es una técnica de cálculo aproximado que permite omitir regularmente algunas iteraciones de un bucle. [ 1 ] [ 2 ] [ 3 ]
Depende de un parámetro : la tasa de perforación . La tasa de perforación puede interpretarse como el número de iteraciones que se omiten cada vez o el número de iteraciones que se realizan antes de omitir una.
Entre las variantes de perforación de bucles se incluyen aquellas que omiten iteraciones de forma determinista a intervalos regulares, aquellas que omiten iteraciones al principio o al final del bucle, y aquellas que omiten una muestra aleatoria de iteraciones. El compilador puede seleccionar la variante de perforación en tiempo de compilación o incluir instrumentación que permita al sistema en tiempo de ejecución ajustar de forma adaptativa la estrategia y la tasa de perforación para cumplir con el objetivo de precisión de extremo a extremo.
Las técnicas de perforación con bucle fueron desarrolladas por primera vez por el profesor del MIT Martin C. Rinard y los investigadores de su grupo, Henry Hoffmann, Sasa Misailovic y Stelios Sidiroglou.
Ejemplos de código
Los ejemplos que siguen proporcionan el resultado de la perforación de bucles aplicada a este código fuente similar a C.
para ( int i = 0 ; i < N ; i ++ ) { // hacer cosas }Saltar n iteraciones cada vez
for ( int i = 0 ; i < N ; i ++ ) { // hacer cosas i = i + skip_factor ; }Saltar una iteración después de n
entero contador = 0 ;for ( int i = 0 ; i < N ; i ++ ) { if ( count == skip_factor ) { count = 0 ; } else { // hacer cosas count ++ ; } }Véase también
- ↑ Henry Hoffmann, Sasa Misailovic, Stelios Sidiroglou, Anant Agarwal, Martin Rinard "Uso de la perforación de código para mejorar el rendimiento, reducir el consumo de energía y responder a fallos" Informe técnico MIT CSAIL 2009-042, septiembre de 2009
- ↑ Sasa Misailovic, Stelios Sidiroglou, Henry Hoffmann, Martin C. Rinard "Perfilado de calidad de servicio" 32.ª Conferencia Internacional sobre Ingeniería de Software (ICSE 2010). Mayo de 2010.
- ↑ Steilos Sidiroglou, Sasa Misailovic, Henry Hoffmann y Martin Rinard. «Gestión de las compensaciones entre rendimiento y precisión mediante la perforación de bucles». ESEC/FSE. Septiembre de 2011.
- Optimización de software
- Cálculo de stubs