TY - GEN
T1 - Safe and flexible adaptation via alternate data structure representations
AU - Kusum, Amlan
AU - Neamtiu, Iulian
AU - Gupta, Rajiv
N1 - Publisher Copyright:
© 2016 ACM.
PY - 2016/3/17
Y1 - 2016/3/17
N2 - The choice of data structures is crucial for achieving high performance. For applications that are long-running and/or operate on large data sets, the best choice for main data structures can change multiple times over the course of a single execution. For example, in a graph-processing application where the graph evolves over time, the best data structure for representing the graph may change as the program executes. Similarly, in a database or a key-value store application, with changes in relative frequencies of different types of queries over time, the most efficient data structure changes as well. We introduce an approach that allows applications to adapt to current conditions (input characteristics, operations on data, state) by switching their data structures on-the-fly with little overhead and without the developer worrying about safety or specifying adaptation points (this is handled by our compiler infrastructure). We use our approach on different classes of problems that are computeand memory-intensive: graph algorithms, database indexing, and two real-world applications, the Memcached object cache and the Space Tyrant online game server. Our results show that off-the-shelf applications can be transformed into adaptive applications with modest programmer effort; that the adaptive versions outperform the original, fixed-representation versions; and that adaptation can be performed on-the-fly safely and with very little runtime overhead.
AB - The choice of data structures is crucial for achieving high performance. For applications that are long-running and/or operate on large data sets, the best choice for main data structures can change multiple times over the course of a single execution. For example, in a graph-processing application where the graph evolves over time, the best data structure for representing the graph may change as the program executes. Similarly, in a database or a key-value store application, with changes in relative frequencies of different types of queries over time, the most efficient data structure changes as well. We introduce an approach that allows applications to adapt to current conditions (input characteristics, operations on data, state) by switching their data structures on-the-fly with little overhead and without the developer worrying about safety or specifying adaptation points (this is handled by our compiler infrastructure). We use our approach on different classes of problems that are computeand memory-intensive: graph algorithms, database indexing, and two real-world applications, the Memcached object cache and the Space Tyrant online game server. Our results show that off-the-shelf applications can be transformed into adaptive applications with modest programmer effort; that the adaptive versions outperform the original, fixed-representation versions; and that adaptation can be performed on-the-fly safely and with very little runtime overhead.
KW - Adaptation
KW - Input characteristics
KW - Runtime data structure selection
KW - Space-time trade-off
UR - http://www.scopus.com/inward/record.url?scp=84966667757&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84966667757&partnerID=8YFLogxK
U2 - 10.1145/2892208.2892220
DO - 10.1145/2892208.2892220
M3 - Conference contribution
AN - SCOPUS:84966667757
T3 - Proceedings of CC 2016: The 25th International Conference on Compiler Construction
SP - 34
EP - 44
BT - Proceedings of CC 2016
PB - Association for Computing Machinery, Inc
T2 - 25th International Conference on Compiler Construction, CC 2016
Y2 - 17 March 2016 through 18 March 2016
ER -