, Bernabé Dorronsoro Díaz (codir. tes.) 
, Elisa Guerrero Vázquez (secret.)
, Johnatan Pecero Sánchez (voc.) 
Esta tesis aborda la optimización automática de programas como un problema de búsqueda combinatoria sobre secuencias de transformaciones de compilación en LLVM, considerando explícitamente selección, repetición y orden de aplicación de las transformaciones. El objetivo es generar versiones alternativas semánticamente equivalentes, especializadas para una plataforma concreta, que mejoren propiedades no funcionales relevantes (principalmente tiempo de ejecución y consumo energético) y extender el mismo marco a un tercer eje: la ofuscación del software como compromiso controlado entre protección y coste en rendimiento.
Para sostener experimentalmente la optimización energética, se desarrolla GREESSE, un sistema de medición de alta resolución con adquisición basada en shunt y un protocolo de sincronización ejecución--medición mediante GPIO, que permite mediciones automatizadas, repetibles y alineadas temporalmente con la ejecución del programa.
La validación se articula en tres escenarios. En primer lugar, se define el problema Software Code Optimization Problem (SCOP) para la optimización del tiempo de ejecución de software. Además, se propone también un enfoque en dos etapas para encontrar secuencias de tamaño más reducido, con el fin de optimizar el proceso de compilación: se resuelve SCOP para buscar secuencias que minimizan el tiempo, y posteriormente Sequence Length Minimization Problem para reducir la longitud de la secuencia resultante de la primera fase manteniendo gran parte de las ganancias en rendimiento, disminuyendo además el coste de compilación. Experimentalmente se alcanzan mejoras de hasta un 326,56% respecto a -O0 y hasta un 51,14% frente a -O3, con reducciones del número de transformaciones de código de hasta un 55,33%.
En segundo lugar, se formula la optimización multiobjetivo tiempo--energía en hardware real (Android) y se introduce el nuevo algoritmo MicroMOCell para resolverlo, que introduce una micropoblación y mecanismos de detección de estancamiento y reinicio como respuesta al limitado presupuesto temporal para las evaluaciones. Los resultados confirman que tiempo y energía no guardan una relación monótona, produciendo frentes de Pareto y mejoras frente a banderas estándar de compilación (en el peor caso, entre un 25-78% en tiempo y un 20-64% en energía).
Finalmente, se formula la ofuscación de programas como problema de optimización (mono y multiobjetivo) usando transformaciones genéricas de LLVM, maximizando métricas estructurales y controlando el impacto en rendimiento. Se obtienen incrementos de ofuscación significativos (de hasta el 342% en el caso más favorable) y, de forma destacada, numerosas soluciones mejoran simultáneamente ofuscación y tiempo de ejecución, con reducciones de hasta un 60% en tiempo de ejecución.
© 2008-2026 Fundación Dialnet · Todos los derechos reservados