Automated Benchmarking of Functional Data Structures

  • Graeme E. Moss
  • Colin Runciman
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1551)


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.


Priority Queue Functional Programming Mutator Node Type Constructor List Operation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Ada93]
    Stephen R. Adams. Efficient sets-a balancing act. Journal of Functional Programming, 3(4):553–561, October 1993.CrossRefGoogle Scholar
  2. [Aub]
  3. [BO96]
    Gerth S. Brodal and Chris Okasaki. Optimal purely functional priority queues. Journal of Functional Programming, 6(6):839–857, November 1996.zbMATHGoogle Scholar
  4. [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
  5. [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
  6. [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
  7. [Mos99]
    Graeme E. Moss. Benchmarking Functional Data Structures. DPhil thesis, University of York, 1999. To be submitted.Google Scholar
  8. [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
  9. [Mye83]
    Eugene W. Myers. An applicative random-access stack. Information Processing Letters, 17(5):241–248, December 1983.Google Scholar
  10. [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
  11. [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
  12. [Oka95]
    Chris Okasaki. Purely functional random-access lists. In Conference Record of FPCA’ 95, pages 86–95. ACM Press, June 1995.Google Scholar
  13. [Oka96]
    Chris Okasaki. Purely Functional Data Structures. PhD thesis, School of Computer Science, Carnegie Mellon University, September 1996.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1998

Authors and Affiliations

  • Graeme E. Moss
    • 1
  • Colin Runciman
    • 1
  1. 1.Department of Computer ScienceUniversity of YorkUK

Personalised recommendations