Abstract
Haskell has a rich set of synchronization primitives for implementing shared-state concurrency abstractions, ranging from the very high level (Software Transactional Memory) to the very low level (mutable variables with atomic read-modifywrite).
In this paper we perform a systematic comparison of these different concurrent programming models by using them to implement the same abstraction: a concurrent linked-list. Our results are somewhat surprising: there is a full two orders of magnitude difference in performance between the slowest and the fastest implementation. Our analysis of the performance results gives new insights into the relative performance of the programming models and their implementation.
Finally, we suggest the addition of a single primitive which in our experiments improves the performance of one of the STM-based implementations by more than a factor of 7.
Index Terms
(auto-classified)Comparing the performance of concurrent linked-list implementations in Haskell (abstract only)
Recommendations
Comparing the performance of concurrent linked-list implementations in Haskell
DAMP '09: Proceedings of the 4th workshop on Declarative aspects of multicore programmingHaskell has a rich set of synchronization primitives for implementing shared-state concurrency abstractions, ranging from the very high level (Software Transactional Memory) to the very low level (mutable variables with atomic read-modify-write).
In ...
Comparing the performance of concurrent linked-list implementations in Haskell
Haskell has a rich set of synchronization primitives for implementing shared-state concurrency abstractions, ranging from the very high level (Software Transactional Memory) to the very low level (mutable variables with atomic read-modify-write).
In ...
Lock-free and practical doubly linked list-based deques using single-word compare-and-swap
OPODIS'04: Proceedings of the 8th international conference on Principles of Distributed SystemsWe present an efficient and practical lock-free implementation of a concurrent deque that supports parallelism for disjoint accesses and uses atomic primitives which are available in modern computer systems. Previously known lock-free algorithms of ...






Comments