jenkinsci/analysis-core-plugin — pull request #10 by kohsuke (2012-06-14 23:03:18+00:00)
Title: Reduce runtime memory footprint by eliminating in-memory LineRange.

The way `List` is stored in memory has a lot of overhead.

This change makes the in-memory representation a lot more compact by using variable-length encoding like UTF-8. `List` can be thought of as a sequence of integers, and these integers get packed into a single byte array.

This provides access characteristics like `LinkedList` (i.e., `get(i)` is expensive), and mutation characteristics like `ArrayList` (i.e., `add(i,o)` is expensive), but otherwise fully satisfies `List` contract.

On my test data set, this is about 2.6MB saving (down from 15.0MB, about 17%).