skip to main content
10.1145/1133981.1133993acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article

An experimental analysis of self-adjusting computation

Published:11 June 2006Publication History

ABSTRACT

Dependence graphs and memoization can be used to efficiently update the output of a program as the input changes dynamically. Recent work has studied techniques for combining these approaches to effectively dynamize a wide range of applications. Toward this end various theoretical results were given. In this paper we describe the implementation of a library based on these ideas, and present experimental results on the efficiency of this library on a variety of applications. The results of the experiments indicate that the approach is effective in practice, often requiring orders of magnitude less time than recomputing the output from scratch. We believe this is the first experimental evidence that incremental computation of any type is effective in practice for a reasonably broad set of applications.

References

  1. M. Abadi, B. W. Lampson, and J.-J. Levy. Analysis and caching of dependencies. In International Conference on Functional Programming, pages 83--91, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. U. A. Acar. Self-Adjusting Computation. PhD thesis, Department of Computer Science, Carnegie Mellon University, May 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. U. A. Acar, G. E. Blelloch, M. Blume, R. Harper, and K. Tangwongsan. A library for self-adjusting computation. In ACM SIGPLAN Workshop on ML, 2005.Google ScholarGoogle Scholar
  4. U. A. Acar, G. E. Blelloch, and R. Harper. Adaptive functional programming. In Proceedings of the 29th Annual ACM Symposium on Principles of Programming Languages, pages 247--259, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. U. A. Acar, G. E. Blelloch, and R. Harper. Selective memoization. In Proceedings of the 30th Annual ACM Symposium on Principles of Programming Languages, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. U. A. Acar, G. E. Blelloch, R. Harper, J. L. Vittes, and M. Woo. Dynamizing static algorithms with applications to dynamic trees and history independence. In ACM-SIAM Symposium on Discrete Algorithms (SODA), 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. U. A. Acar, G. E. Blelloch, K. Tangwongsan, and J. Vittes. Kinetic algorithms via self-adjusting computation. Technical Report CMU-CS-06-115, Department of Computer Science, Carnegie Mellon University, March 2006.Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. U. A. Acar, G. E. Blelloch, and J. L. Vittes. An experimental analysis of change propagation in dynamic trees. In Workshop on Algorithm Engineering and Experimentation, 2005.Google ScholarGoogle Scholar
  9. C. B. Barber, D. P. Dobkin, and H. Huhdanpaa. The quickhull algorithm for convex hulls. ACM Trans. Math. Softw., 22(4):469--483, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. R. Bellman. Dynamic Programming. Princeton University Press, 1957. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. M. A. Bender, R. Cole, E. D. Demaine, M. Farach-Colton, and J. Zito. Two simplified algorithms for maintaining order in a list. In Lecture Notes in Computer Science, pages 152--164, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. G. S. Brodal and R. Jacob. Dynamic planar convex hull. In Proceedings of the 43rd Annual IEEE Symposium on Foundations of Computer Science, pages 617--626, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. Carlsson. Monads for incremental computing. In Proceedings of the seventh ACM SIGPLAN international conference on Functional programming, pages 26--35. ACM Press, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. T. M. Chan. Optimal output-sensitive convex hull algorithms in two and three dimensions. Discrete and Computational Geometry, 16:361--368, 1996.Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. T. M. Chan. Dynamic planar convex hull operations in near-logarithmic amortized time. J. ACM, 48(1):1--12, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Y.-J. Chiang and R. Tamassia. Dynamic algorithms in computational geometry. Proceedings of the IEEE, 80(9):1412--1434, 1992.Google ScholarGoogle ScholarCross RefCross Ref
  17. A. Demers, T. Reps, and T. Teitelbaum. Incremental evaluation of attribute grammars with application to syntax directed editors. In Proceedings of the 8th Annual ACM Symposium on Principles of Programming Languages, pages 105--116, 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. P. F. Dietz and D. D. Sleator. Two algorithms for maintaining order in a list. In Proceedings of the 19th ACM Symposium on Theory of Computing, pages 365--372, 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. D. Eppstein, Z. Galil, and G. F. Italiano. Dynamic graph algorithms. In M. J. Atallah, editor, Algorithms and Theory of Computation Handbook, chapter 8. CRC Press, 1999.Google ScholarGoogle Scholar
  20. R. L. Graham. An efficient algorithm for determining the convex hull of a finite planar set. Information Processing Letters, 1:132--133, 1972.Google ScholarGoogle ScholarCross RefCross Ref
  21. A. Heydon, R. Levin, and Y. Yu. Caching function calls using precise dependencies. In Proceedings of the 2000 ACM SIGPLAN Conference on PLDI, pages 311--320, May 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. D. G. Kirkpatrick and R. Seidel. The ultimate planar convex hull algorithm. SIAM Journal on Computing, 15(2):287--299, 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. D. Knuth. The Art of Computer Programming: Sorting and Searching. Addison Wesley, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Y. A. Liu, S. Stoller, and T. Teitelbaum. Discovering auxiliary information for incremental computation. In Proceedings of the 23rd Annual ACM Symposium on Principles of Programming Languages, pages 157--170, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Y. A. Liu, S. Stoller, and T. Teitelbaum. Static caching for incremental computation. ACM Transactions on Programming Languages and Systems, 20(3):546--585, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. J. McCarthy. A Basis for a Mathematical Theory of Computation. In P. Braffort and D. Hirschberg, editors, Computer Programming and Formal Systems, pages 33- 70. North-Holland, Amsterdam, 1963.Google ScholarGoogle ScholarCross RefCross Ref
  27. D. Michie. Memo functions and machine learning. Nature, 218:19--22, 1968.Google ScholarGoogle ScholarCross RefCross Ref
  28. M. H. Overmans and J. van Leeuwen. Maintenance of configurations in the plane. Journal of Computer and System Sciences, 23:166--204, 1981.Google ScholarGoogle ScholarCross RefCross Ref
  29. W. Pugh. Incremental computation via function caching. PhD thesis, Department of Computer Science, Cornell University, August 1988.Google ScholarGoogle Scholar
  30. W. Pugh and T. Teitelbaum. Incremental computation via function caching. In Proceedings of the 16th Annual ACM Symposium on Principles of Programming Languages, pages 315--328, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. G. Ramalingam and T. Reps. A categorized bibliography on incremental computation. In Conference Record of the 20th Annual ACM Symposium on POPL, pages 502--510, Jan. 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. R. Seidel. Linear programming and convex hulls made easy. In SCG '90: Proceedings of the sixth annual symposium on Computational geometry, pages 211--215, New York, NY, USA, 1990. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. M. I. Shamos. Computational Geometry. PhD thesis, Department of Computer Science, Yale University, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. R. Wenger. Randomized quickhull. Algorithmica, 17(3):322--329, 1997.Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. An experimental analysis of self-adjusting computation

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!