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