Unrolling lists

@inproceedings{Shao1994UnrollingL,
  title={Unrolling lists},
  author={Zhong Shao and John H. Reppy and Andrew W. Appel},
  booktitle={LFP '94},
  year={1994}
}
Lists are ubiquitous in functional programs, thus supporting lists efficiently is a major concern to compiler writers for functional languages. Lists are normally represented as linked <italic>cons</italic> cells, with each <italic>cons</italic> cell containing a <italic>car</italic> (the data) and a <italic>cdr</italic> (the link); this is inefficient in the use of space, because 50% of the storage is used for links. Loops and recursions on lists are slow on modern machines because of the long… Expand
Fast Functional Lists, Hash-Lists, Deques, and Variable Length Arrays
TLDR
A new data structure, the VList, that is compact, thread safe and significantly faster to use than Linked Lists for nearly all list operations is introduced. Expand
Fast Functional Lists
TLDR
A new data structure, the VList, that is compact, thread safe and significantly faster to use than Linked Lists for nearly all list operations is introduced. Expand
Practical Concurrent Unrolled Linked Lists Using Lazy Synchronization
TLDR
This paper introduces a new high-performance concurrent unrolled linked list with a lazy synchronization strategy that allows wait-free read operations and shows up to a 300% improvement over other concurrent list-based sets. Expand
Practical concurrent unrolled linked lists using lazy synchronization
TLDR
This work introduces a new high-performance concurrent unrolled linked list with a lazy synchronization strategy that most write operations under this strategy can complete by locking a single node. Expand
Record Unboxing
This paper proposes a type-based optimization method that “unboxes” records whenever possible by flattening nested records and changing top-level tuples to multiple value passing. We first develop aExpand
Catamorphism-based program transformations for non-strict functional languages
TLDR
The warm fusion method is implemented in the Glasgow Haskell Compiler, which has allowed practical feedback, and the problem of removing mutually recursive sets of polynomial datatypes is analysed in detail. Expand
Compiling standard ML for efficient execution on modern machines
TLDR
This dissertation presents the design and evaluation of several new compilation techniques that meet tough challenges to efficient implementations of Standard ML by taking advantage of some of the higher-level language features in SML. Expand
An Unboxed Operational Semantics for ML Polymorphism
We present an unboxed operational semantics for an ML-style polymorphic language. Different from the conventional formalisms, the proposed semantics accounts for actual representations of run-timeExpand
Concurrent Unrolled Skiplist
TLDR
A new algorithm for maintaining a concurrent skiplist that uses two techniques to boost performance, including storing multiple key-value pairs in the same node and using an advanced locking primitive based on "group mutual exclusion". Expand
λ cu — An Intermediate Representation for Compiling Nested Data Parallelism
GPUs provide more raw processing power than has been accessible in the past, but making effective use of this processing power is a forbidding programming task. With high memory bandwidth and vastExpand
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 41 REFERENCES
An empirical study of list structure in Lisp
TLDR
Pointers to atoms are found to obey, roughly, Zipf's law, which governs word frequencies in natural languages; pointers to lists usually point to a location physically nearby in memory. Expand
A new list compaction method
TLDR
A new list compaction method is presented that performs well during both sequential and ‘parallel’ list generation and performance figures in a simulated environment suggest that the strategy consistently performs better than conventional cdr‐coding, with essentially the same complexity. Expand
List structure: measurements, algorithms, and encodings.
' ABSTRACT This thesis is about list structures: how they are used tn practice, how they can be moved .and copied efficiently, and howthey can .be represented by space-saving encodings. The approachExpand
List processing in real time on a serial computer
TLDR
A real-time list processing system is presented which continuously reclaims garbage, including directed cycles, while linearizing and compacting the accessible cells into contiguous locations to avoid fragmenting the free storage pool. Expand
Compact Encodings of List Structure
TLDR
It is shown that according to the model proposed, list structures with compact cdr fields will, as address space grows, continue to be compacted well with a fixed-width small field and about a factor of two gain in space efficiency can be had for little or no cost in processing time. Expand
Compiling a functional language
TLDR
This paper summarizes the author's experience in implementing a compiler for a functional language, ML, which was first implemented in 1980 as a personal project when he was a postgraduate student at the University of Edinburgh. Expand
Compact list representation: definition, garbage collection, and system implementation
TLDR
The Swym system permits a list to be chained, compact, or any combination of the two; the system garbage collector attempts to make all lists compact; it relocates and rearranges all of list storage using temporary storage. Expand
Rabbit: A Compiler for Scheme
TLDR
A compiler for the lexically-scoped dialect of LISP known as SCHEME, which handles only a small basis set which reflects the semantics of lambda-calculus, and serves to produce code as good as that produced by more traditional compilers. Expand
Unboxed Values as First Class Citizens in a Non-Strict Functional Language
TLDR
The code compiled from a non-strict functional program usually manipulates heap-allocated boxed numbers and optimises operations on boxed numbers into simpler operations on their unboxed forms. Expand
A note on hash linking
TLDR
This note is based on the observation that it is often useful to associate additional information, with some (relatively few) address locations determined at run time, without the necessity of preallocating the storage at all possible such addresses. Expand
...
1
2
3
4
5
...