Automated Benchmarking of Functional Data Structures
- 309 Downloads
Despite a lot of recent interest in purely functional data structures, for example [Ada93, Oka95, BO96, Oka96, OB97, Erw97], few have been benchmarked. Of these, even fewer have their performance qualified by how they are used. But how a data structure is used can significantly affect performance. This paper makes three original contributions. (1) We present an algorithm for generating a benchmark according to a given use of data structure. (2) We compare use of an automated tool based on this algorithm, with the traditional technique of hand-picked benchmarks, by benchmarking six implementations of random-access list using both methods. (3) We use the results of this benchmarking to present a decision tree for the choice of random-access list implementation, according to how the list will be used.
KeywordsPriority Queue Functional Programming Mutator Node Type Constructor List Operation
Unable to display preview. Download preview PDF.
- [Aub]The Auburn Home Page. http://www.cs.york.ac.uk/~gem/auburn/.
- [Erw97]Martin Erwig. Functional programming with graphs. In Proceedings of the 1997 ACM SIGPLAN International Conference on Functional Programming, pages 52–65. ACM Press, June 1997.Google Scholar
- [Hoo92]Rob R. Hoogerwoord. A logarithmic implementation of flexible arrays. In Proceedings of the Second International Conference on the Mathematics of Program Construction, volume 669 of LNCS, pages 191–207, July 1992.Google Scholar
- [KT95]Haim Kaplan and Robert E. Tarjan. Persistent lists with catenation via recursive slow-down. In Proceedings of the 27th Annual ACM Symposium on Theory of Computing, pages 93–102, May 1995.Google Scholar
- [Mos99]Graeme E. Moss. Benchmarking Functional Data Structures. DPhil thesis, University of York, 1999. To be submitted.Google Scholar
- [MR97]Graeme E. Moss and Colin Runciman. Auburn: A kit for benchmarking functional data structures. In Proceedings of IFL’ 97, volume 1467 of LNCS, pages 141–160, September 1997.Google Scholar
- [Mye83]Eugene W. Myers. An applicative random-access stack. Information Processing Letters, 17(5):241–248, December 1983.Google Scholar
- [Mye84]Eugene W. Myers. Efficient applicative data types. In Conference Record of the Eleventh Annual ACM Symposium on Principles of Programming Languages, pages 66–75, 1984.Google Scholar
- [OB97]Melissa E. O’Neill and F. Warren Burton. A new method for functional arrays. Journal of Functional Programming, 7(5):487–513, September 1997.Google Scholar
- [Oka95]Chris Okasaki. Purely functional random-access lists. In Conference Record of FPCA’ 95, pages 86–95. ACM Press, June 1995.Google Scholar
- [Oka96]Chris Okasaki. Purely Functional Data Structures. PhD thesis, School of Computer Science, Carnegie Mellon University, September 1996.Google Scholar