Arrays in Practice: An Empirical Study of Array Access Patterns on the JVM
CoRR(2024)
摘要
The array is a data structure used in a wide range of programs. Its compact
storage and constant time random access makes it highly efficient, but
arbitrary indexing complicates the analysis of code containing array accesses.
Such analyses are important for compiler optimisations such as bounds check
elimination. The aim of this work is to gain a better understanding of how
arrays are used in real-world programs. While previous work has applied static
analyses to understand how arrays are accessed and used, we take a dynamic
approach. We empirically examine various characteristics of array usage by
instrumenting programs to log all array accesses, allowing for analysis of
array sizes, element types, from where arrays are accessed and to which extent
sequences of array accesses form recognizable patterns. The programs in the
study were collected from the Renaissance benchmark suite, all running on the
Java Virtual Machine.
We account for characteristics displayed by the arrays investigated, finding
that most arrays have a small size, are accessed by only one or two classes and
by a single thread. On average over the benchmarks, 69.8
patterns consist of uncomplicated traversals. Most of the instrumented classes
(over 95
data covering 3,803,043,390 array accesses made across 168,686 classes. While
our analysis has only been applied to the Renaissance benchmark suite, the
methodology can be applied to any program running on the Java Virtual Machine.
This study, and the methodology in general, can inform future runtime
implementations and compiler optimisations.
更多查看译文
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要