logo of the SSW institute ;)
Computer Science
System Software

Home

General
Staff
Contact
Partners
Alumni

Research
Areas
Projects
Papers
Books
Reports
Awards

Teaching
Lectures
Exams
B.Projects
M.Theses
PhD Theses
Go Abroad

Misc
Talks
Library
Gallery
Links
Search

Webmaster


Efficient Coroutines for the Java Platform

Lukas Stadler
Institute for System Software

Thomas Würthinger
Institute for System Software

Christian Wimmer
Department of Computer Science
University of California, Irvine
cwimmer@uci.edu

In Proceedings of the International Conference on Principles and Practice of Programming in Java, pages 20–28. ACM Press, 2010. doi:10.1145/1852761.1852765


Abstract

Coroutines are non-preemptive light-weight processes. Their advantage over threads is that they do not have to be synchronized because they pass control to each other explicitly and deterministically. Coroutines are therefore an elegant and efficient implementation construct for numerous algorithmic problems.

Many mainstream languages and runtime environments, however, do not provide a coroutine implementation. Even if they do, these implementations often have less than optimal performance characteristics because of the tradeoff between run time and memory efficiency.

As more and more languages are implemented on top of the Java virtual machine (JVM), many of which provide coroutine-like language features, the need for a coroutine implementation has emerged.We present an implementation of coroutines in the JVM that efficiently handles a large range of workloads. It imposes no overhead for applications that do not use coroutines and performs well for applications that do.

For evaluation purposes, we use our coroutines to implement JRuby fibers, which leads to a significant speedup of certain JRuby programs. We also present general benchmarks that show the performance of our approach and outline its run-time and memory characteristics.


http://dx.doi.org/10.1145/1852761.1852765

PDF

© ACM, 2010. This is the authorís version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution.