Show simple item record

Files in this item

Thumbnail

Item metadata

dc.contributor.authorFerreiro, Henrique
dc.contributor.authorCastro, Laura
dc.contributor.authorJanjic, Vladimir
dc.contributor.authorHammond, Kevin
dc.date.accessioned2016-03-17T16:30:10Z
dc.date.available2016-03-17T16:30:10Z
dc.date.issued2016-03-17
dc.identifier241569241
dc.identifiere85c88e7-093d-4e8b-b9c0-5dfa5cb29bfb
dc.identifier84966474638
dc.identifier000389808800006
dc.identifier.citationFerreiro , H , Castro , L , Janjic , V & Hammond , K 2016 , Kindergarten Cop : dynamic nursery resizing for GHC . in CC 2016 Proceedings of the 25th International Conference on Compiler Construction . ACM , New York , pp. 56-66 , 25th International Conference on Compiler Construction , Barcelona , Spain , 17/03/16 . https://doi.org/10.1145/2892208.2892223en
dc.identifier.citationconferenceen
dc.identifier.isbn9781450342414
dc.identifier.otherORCID: /0000-0002-4326-4562/work/33080450
dc.identifier.urihttps://hdl.handle.net/10023/8432
dc.description.abstractGenerational 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.
dc.format.extent10
dc.format.extent446144
dc.language.isoeng
dc.publisherACM
dc.relation.ispartofCC 2016 Proceedings of the 25th International Conference on Compiler Constructionen
dc.subjectGenerational garbage collectionen
dc.subjectCache localityen
dc.subjectAllocation areaen
dc.subjectFunctional programmingen
dc.subjectQA75 Electronic computers. Computer scienceen
dc.subjectNDASen
dc.subject.lccQA75en
dc.titleKindergarten Cop : dynamic nursery resizing for GHCen
dc.typeConference itemen
dc.contributor.sponsorEuropean Commissionen
dc.contributor.institutionUniversity of St Andrews. School of Computer Scienceen
dc.contributor.institutionUniversity of St Andrews. Centre for Interdisciplinary Research in Computational Algebraen
dc.identifier.doi10.1145/2892208.2892223
dc.identifier.grantnumber644235en


This item appears in the following Collection(s)

Show simple item record