Downloads provided by UsageCounts
handle: 10023/8432
Generational garbage collectors are among the most popular garbage collectors used in programming language runtime systems. Their performance is known to depend heavily on choosing the appropriate size of the area where new objects are allocated (the nursery). In imperative languages, it is usual to make the nursery as large as possible, within the limits imposed by the heap size. Functional languages, however, have quite different memory behaviour. In this paper, we study the effect that the nursery size has on the performance of lazy functional programs, through the interplay between cache locality and the frequency of collections. We demonstrate that, in contrast with imperative programs, having large nurseries is not always the best solution. Based on these results, we propose two novel algorithms for dynamic nursery resizing that aim to achieve a compromise between good cache locality and the frequency of garbage collections. We present an implementation of these algorithms in the state-of-the-art GHC compiler for the functional language Haskell, and evaluate them using an extensive benchmark suite. In the best case, we demonstrate a reduction in total execution times of up to 88.5%, or an 8.7 overall speedup, compared to using the production GHC garbage collector. On average, our technique gives an improvement of 9.3% in overall performance across a standard suite of 63 benchmarks for the production GHC compiler.
QA75, Allocation area, QA75 Electronic computers. Computer science, /dk/atira/pure/subjectarea/asjc/1700/1708, NDAS, name=Signal Processing, 004, name=Software, Functional programming, name=Hardware and Architecture, Generational garbage collection, Cache locality, /dk/atira/pure/subjectarea/asjc/1700/1712, /dk/atira/pure/subjectarea/asjc/1700/1711
QA75, Allocation area, QA75 Electronic computers. Computer science, /dk/atira/pure/subjectarea/asjc/1700/1708, NDAS, name=Signal Processing, 004, name=Software, Functional programming, name=Hardware and Architecture, Generational garbage collection, Cache locality, /dk/atira/pure/subjectarea/asjc/1700/1712, /dk/atira/pure/subjectarea/asjc/1700/1711
| selected citations These citations are derived from selected sources. This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | 0 | |
| popularity This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network. | Average | |
| influence This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | Average | |
| impulse This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network. | Average |
| views | 5 | |
| downloads | 2 |

Views provided by UsageCounts
Downloads provided by UsageCounts