Modern compilers provide different code optimizations before and during run-time, thus moving required domain knowledge about the compilation process away from the developer and speeding up resulting software. These optimizations are often based on formal proof, or alternatively have recovery paths as backup. Genetic improvement (GI), a field of science utilizing the genetic programming algorithm, a stochastic optimization technique, has been previously utilized to both fix bugs in software, as well as improving non-functional software requirements.
This work proposes to research the applicability of GI in an offline phase directly at the interpreter or compiler level, utilizing abstract syntax trees. The primary goal is to reformulate existing source code in such a way that existing optimizations can be applied in order to increase performance even further and requiring even less domain knowledge from the developer about a specific programming language and/or compiler. From these reformulations, language-specific patterns can be identified that allow code restructuring without the execution overhead GI poses.
Tue 24 Oct
|10:30 - 11:10|
|11:10 - 11:50|