TY - GEN
T1 - Accordion arrays
T2 - ISMM'07: 2007 International Symposium on Memory Management
AU - Zules, Craig
PY - 2007
Y1 - 2007
N2 - In this work, we present accordion arrays, a straight-forward and effective memory compression technique targeting Unicode-based character arrays. In many non-numeric Java programs, character arrays represent a significant fraction (30-40% on average) of the heap memory allocated. In many locales, most, but not all, of those arrays consist entirely of characters whose top bytes are zeros, and, hence, can be stored as byte arrays without loss of information. In order to get the almost factor of two compression rate for character vectors, two challenges must be overcome: 1) all code that reads and writes character vectors must dynamically determine which kind of array is being accessed and perform byte or character loads/stores as appropriate, and 2) compressed vectors must be dynamically inflated when an incompressible character is written. We demonstrate how these challenges can be overcome with minimal space and execution time overhead, resulting in an average speedup of 2% across our benchmark suite, with individual speedups as high as 8%.
AB - In this work, we present accordion arrays, a straight-forward and effective memory compression technique targeting Unicode-based character arrays. In many non-numeric Java programs, character arrays represent a significant fraction (30-40% on average) of the heap memory allocated. In many locales, most, but not all, of those arrays consist entirely of characters whose top bytes are zeros, and, hence, can be stored as byte arrays without loss of information. In order to get the almost factor of two compression rate for character vectors, two challenges must be overcome: 1) all code that reads and writes character vectors must dynamically determine which kind of array is being accessed and perform byte or character loads/stores as appropriate, and 2) compressed vectors must be dynamically inflated when an incompressible character is written. We demonstrate how these challenges can be overcome with minimal space and execution time overhead, resulting in an average speedup of 2% across our benchmark suite, with individual speedups as high as 8%.
KW - Array
KW - Character
KW - Compression
KW - Java
KW - Memory management
KW - Polymorphism
KW - Unicode
UR - http://www.scopus.com/inward/record.url?scp=42149149833&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=42149149833&partnerID=8YFLogxK
U2 - 10.1145/1296907.1296916
DO - 10.1145/1296907.1296916
M3 - Conference contribution
AN - SCOPUS:42149149833
SN - 9781595938930
T3 - International Symposium on Memory Management, ISMM
SP - 55
EP - 66
BT - ISMM'07
Y2 - 21 October 2007 through 22 October 2007
ER -