Z-rays: Divide arrays and conquer speed and flexibility

Jennifer B. Sartor, Stephen M. Blackburn, Daniel Frampton, Martin Hirzel, Kathryn S. McKinley

    Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

    14 Citations (Scopus)

    Abstract

    Arrays are the ubiquitous organization for indexed data. Throughout programming language evolution, implementations have laid out arrays contiguously in memory. This layout is problematic in space and time. It causes heap fragmentation, garbage collection pauses in proportion to array size, and wasted memory for sparse and over-provisioned arrays. Because of array virtualization in managed languages, an array layout that consists of indirection pointers to fixed-size discontiguous memory blocks can mitigate these problems transparently. This design however incurs significant overhead, but is justified when real-time deadlines and space constraints trump performance. This paper proposes z-rays, a discontiguous array design with flexibility and efficiency. A z-ray has a spine with indirection pointers to fixed-size memory blocks called arraylets, and uses five optimizations: (1) inlining the first N array bytes into the spine, (2) lazy allocation, (3) zero compression, (4) fast array copy, and (5) arraylet copy-on-write. Whereas discontiguous arrays in prior work improve responsiveness and space efficiency, z-rays combine time efficiency and flexibility. On average, the best z-ray configuration performs within 12.7% of an unmodified Java Virtual Machine on 19 benchmarks, whereas previous designs have two to three times higher overheads. Furthermore, language implementers can configure z-ray optimizations for various design goals. This combination of performance and flexibility creates a better building block for past and future array optimization.

    Original languageEnglish
    Title of host publicationPLDI'10 - Proceedings of the 2010 ACM SIGPLAN Conference on Programming Language Design and Implementation
    Pages471-482
    Number of pages12
    DOIs
    Publication statusPublished - 2010
    EventACM SIGPLAN 2010 Conference on Programming Language Design and Implementation, PLDI 2010 - Toronto, ON, Canada
    Duration: 5 Jun 201010 Jun 2010

    Publication series

    NameProceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)

    Conference

    ConferenceACM SIGPLAN 2010 Conference on Programming Language Design and Implementation, PLDI 2010
    Country/TerritoryCanada
    CityToronto, ON
    Period5/06/1010/06/10

    Fingerprint

    Dive into the research topics of 'Z-rays: Divide arrays and conquer speed and flexibility'. Together they form a unique fingerprint.

    Cite this