# Spencer: Interactive Heap Analysis for the Masses

**Authors:** Stephan Brandauer, Tobias Wrigstad

arXiv: 1703.05615 · 2017-04-03

## TL;DR

Spencer is a web-based framework that enables easy, reproducible, and sharable dynamic analysis of program traces through high-level queries, facilitating large-scale heap analysis for programming language design and implementation.

## Contribution

It introduces a high-level query framework and a shared trace collection for dynamic program analysis, improving accessibility, reproducibility, and scalability.

## Key findings

- Enables analysis of large trace datasets on commodity hardware.
- Provides fast, cached query results for complex analyses.
- Facilitates sharing and reproducibility of program behavior data.

## Abstract

Programming language-design and run-time-implementation require detailed knowledge about the programs that users want to implement. Acquiring this knowledge is hard, and there is little tool support to effectively estimate whether a proposed tradeoff actually makes sense in the context of real world applications.   Ideally, knowledge about behaviour of "typical" programs is 1) easily obtainable, 2) easily reproducible, and 3) easily sharable. We present Spencer, a web service and API framework for dynamic analysis of a continuously growing set of traces of standard program corpora. Users do not obtain traces on their own, but can instead send queries to the web service that will be executed on a set of program traces. Queries are built in terms of a set of query combinators that present a high level interface for working with trace data. Since the framework is high level, and there is a hosted collection of recorded traces, queries are easy to implement. Since the data sets are shared by the research community, results are reproducible. Since the actual queries run on one (or many) servers that provide analysis as a service, obtaining results is possible on commodity hardware.   Data in Spencer is meant to be obtained once, and analysed often, making the overhead of data collection mostly irrelevant. This allows Spencer to collect more data than traditional tracing tools can afford within their performance budget. Results in Spencer are cached, making complicated analyses that build on cached primitive queries speedy.

## Full text

_Full body text omitted from this summary view._ Fetch the complete paper as Markdown: https://tomesphere.com/paper/1703.05615/full.md

## Figures

18 figures with captions in the complete paper: https://tomesphere.com/paper/1703.05615/full.md

## References

20 references — full list in the complete paper: https://tomesphere.com/paper/1703.05615/full.md

---
Source: https://tomesphere.com/paper/1703.05615