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-modify-write).
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.
- R. Bayer and M. Schkolnick. Concurrency of operations on b-trees. pages 129--139, 1988. Google Scholar
Digital Library
- H.-J. Boehm and S.V. Adve. Foundations of the c++ concurrency memory model. In Proc. of PLDI'08, pages 68--78. ACM Press, 2008. Google Scholar
- K. Fraser and T. Harris. Concurrent programming without locks. ACM Trans. Comput. Syst., 25(2):5, 2007. Google Scholar
Digital Library
- Glasgow haskell compiler home page. http://www.haskell.org/ghc/.Google Scholar
- T. Harris, S. Marlow, S. Peyton Jones, and M. Herlihy. Composable memory transactions. In Proc. of PPoPP'05, pages 48--60. ACM Press, 2005. Google Scholar
- T.L. Harris. A pragmatic implementation of non-blocking linkedlists. In LNCS, volume 2180, pages 300--314. Springer-Verlag, 2001. Google Scholar
Digital Library
- M. Herlihy and E. Koskinen. Transactional boosting: a methodology for highly-concurrent transactional objects. In Proc. of PPoPP'08, pages 207--216. ACM Press, 2008. Google Scholar
- J. Manson, W. Pugh, and S.V. Adve. The Java memory model. In Proc. of POPL'05, pages 378--391. ACM Press, 2005. Google Scholar
- S. Marlow, S.L. Peyton Jones, A. Moran, and J. Reppy. Asynchronous exceptions in Haskell. In ACM Conference on Programming Languages Design and Implementation (PLDI'01), pages 274--285, Snowbird, Utah, June 2001. ACM Press. Google Scholar
Digital Library
- C. Perfumo, N. Sönmez, S. Stipic, O.S. Unsal, A. Cristal, T. Harris, and M. Valero. The limits of software transactional memory (stm): dissecting haskell stm applications on a many-core environment. In Proc. of 5th Conference on Computing Frontiers, pages 67--78. ACM Press, 2008. Google Scholar
Digital Library
- S. Peyton Jones, editor. Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, 2003.Google Scholar
- S. Peyton Jones, A. Gordon, and S. Finne. Concurrent Haskell. In Proc. of POPL'96, pages 295--308. ACM Press, 1996. Google Scholar
- N. Sonmez, C. Perfumo, S. Stipic, A. Cristal, O.S. Unsal, and M. Valero. unreadTVar: Extending haskell software transactional memory for performance. In Proc. of Eighth Symposium on Trends in Functional Programming (TFP 2007), 2007.Google Scholar
Index Terms
Comparing the performance of concurrent linked-list implementations in Haskell
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 (abstract only)
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 ...
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