Data structure selection and tuning is laborious but can vastly improve an
application's performance and memory footprint. Some data structures share a
common interface and enjoy multiple implementations. We call them Darwinian
Data Structures (DDS), since we can subject their implementations to survival
of the fittest. We introduce ARTEMIS a multi-objective, cloud-based
search-based optimisation framework that automatically finds optimal, tuned DDS
modulo a test suite, then changes an application to use that DDS. ARTEMIS
achieves substantial performance improvements for \emph{every} project in 5
Java projects from DaCapo benchmark, 8 popular projects and 30 uniformly
sampled projects from GitHub. For execution time, CPU usage, and memory
consumption, ARTEMIS finds at least one solution that improves \emph{all}
measures for 86% (37/43) of the projects. The median improvement across
the best solutions is 4.8%, 10.1%, 5.1% for runtime, memory and CPU
usage.
These aggregate results understate ARTEMIS's potential impact. Some of the
benchmarks it improves are libraries or utility functions. Two examples are
gson, a ubiquitous Java serialization framework, and xalan, Apache's XML
transformation tool. ARTEMIS improves gson by 16.5\%, 1% and 2.2% for
memory, runtime, and CPU; ARTEMIS improves xalan's memory consumption by
23.5\%. \emph{Every} client of these projects will benefit from these
performance improvements.Comment: 11 page