Analysis of Run-time Bloat

Run-time bloat refers to the general phenomenon of using excessive work and memory to achieve seemingly simple tasks. Bloat often exists in object-oriented programs and can significantly affect their scalability and performance. The overarching goal of our work is to find substantial bloat-related optimization opportunities, with little involvement and effort from the programmer. To achieve this goal, we advocate tool-assisted manual optimization, in order to combine developer insight with the automated tool support [FOSER10].

The main contributions of this work are as follows:

Dynamic analyses
We developed novel dynamic analyses to detect wasteful run-time operations and to pinpoint the underlying performance bottlenecks. Examples include copy profiling [PLDI09], cost-benefit analysis [PLDI10-1], unified framework for abstract dynamic slicing [TOSEM14], reference propagation analysis [ICSE12, PhD14], and analysis of container behavior [WODA12].
Static analyses
Unlike existing work which focused only on dynamic analysis of bloat, we provided the first evidence that static analysis of bloat in object-oriented programs is feasible and effective. This was done for two commonly-occurring patterns: inefficient use of containers [PLDI10-2] and loop-invariant object-oriented data structures [ECOOP12].
Memory leaks
We proposed new techniques to identify memory leaks, both dynamically [TOSEM13, PLDI11, ICSE08] and statically [CGO14-2, PhD14], with focus on common leak causes such as containers and repeated transactions.
This effort is funded by an NSF grant and by an IBM Software Quality Innovation Award.


main page