All publications

Darwinian Data Structure Selection

2018·ESEC/FSE 2018·Read the paper
Collection<T>ArrayList✓ survivesLinkedList✗ dominatedArrayDeque✓ survivesTreeSet✗ dominatedfitness = execution time · CPU · memory, measured under the project's own testsdescent with modification, decided by measurement

Figure 1: Darwinian selection over data structures. Interchangeable implementations compete under real workloads (a); measured fitness — time, CPU, memory — decides descent (b).

The origin paper. Programs inherit their data structures from habit — ArrayList because it was there. This work made the choice empirical: evolve real Java programs by substituting interchangeable data structures, run the full test-and-benchmark cycle for every variant, and let measured fitness select the survivors.

Across widely-used open-source Java projects the approach delivered consistent improvements in execution time, CPU usage, and memory — establishing the measure-search-validate loop that every later system in this line, Artemis included, still runs.

Key results

  • Consistent time, CPU, and memory gains on real-world Java projects
  • Every variant validated by the project's own tests before selection
  • The founding method behind Artemis, published before LLMs existed