skip to main content
10.1145/232627.232630acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
Article
Free Access

Let-floating: moving bindings to give faster programs

Published:15 June 1996Publication History

ABSTRACT

Virtually every compiler performs transformations on the program it is compiling in an attempt to improve efficiency. Despite their importance, however, there have been few systematic attempts to categorise such transformations and measure their impact.In this paper we describe a particular group of transformations --- the "let-floating" transformations --- and give detailed measurements of their effect in an optimizing compiler for the non-strict functional language Haskell. Let-floating has not received much explicit attention in the past, but our measurements show that it is an important group of transformations (at least for lazy languages), offering a reduction of more than 30% in heap allocation and 15% in execution time.

References

  1. AV Aho, R Sethi & JD Ullman {1986}, Compilers - principles, techniques and ~ools, Addison Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. AW Appel {1992}, Compiling with continuations, Cambridge University Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Z Ariola, M Felleisen, J Maraist, M Odersky & P Wadler {Jan 1995}, "A call by need lambda calculus," in 21st ACM Symposium on Principles of Programming Languages, San Francisco, ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. DF Bacon, SL Graham gc OJ Sharp {Dec 1994}, "Compiler transformations for high-performance computing," ACM Computing Surveys 26, 345-420. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. C Flanagan, A Sabry, B Duba & M Felleisen {June 1993}, "The essence of compiling with continuations," SIC- PLAN Notices 28, 237-247. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S Fortune, D Leivant & M O'Donnell{Jan 1983}, "The expressiveness of simple and second-order type structures,'' JACM 30, 151-185. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. P Fradet gc D Le Metayer {Jan 1991}, "Compilation of functional languages by program transformation," A CM Transactions on Programming Languages and Systems 13, 21-51. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. AJ Gill {Jan 1996}, "Cheap deforestation for non-strict functional languages," PhD thesis, Department of Computing Science, Glasgow University.Google ScholarGoogle Scholar
  9. P Hudak, SL Peyton Jones, PL Wadler, Arvind, B Boutel, J Fairbairn, J Fasel, M Guzman, K Hammond, J Hughes, T Johnsson, R Kieburtz, RS Nikhil, W Partain &: J Peterson{May 1992}, "Report on the functional programming language HaskeI1, Version 1.2," SIGPLAN Notices 27.Google ScholarGoogle Scholar
  10. RJM Hughes {July 1983}, "The design and implementation of programming languages," PhD thesis, Programming Research Group, Oxford.Google ScholarGoogle Scholar
  11. R Kelsey {May 1989}, "Compilation by program transformation,'' YALEU/DCS/RR-702, PhD thesis, Department of Computer Science, Yale University. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. R Kelsey 8e P Hudak {Jan 1989}, "Realistic compilation by program transformation," in Proc A CM Conference on Principles of Programming Languages, ACM, 281-292. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. DA Kranz {May 1988}, "ORBIT- an optimising compiler for Scheme," PhD thesis, Department of Computer Science, Yale University. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. DA Kranz, R Kelsey, J Rees, P Hudak, J Philbin & N Adams {1986}, "ORBIT - an optimising compiler for Scheme," in Proc SIGPLAN Symposium on Cornprier Construction, ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. J Launchbury {Jan 1993}, "A natural semantics for lazy evaluation,'' in 20th ACM Symposium on Principles of Programming Languages, Charleston, ACM, 144- 154. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. WD Partain {1993}, "The nofib Benchmark Suite of Haskell Programs," in Functional Programming, Glasgow 1992, J Launchbury & PM Sansom, eds., Workshops in Computing, Springer Verlag, 195-202. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. SL Peyton Jones {1987}, The Implemenia,ion of Functional Programming Languages, Prentice Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. SL Peyton Jones {Apr 1992}, "Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine," Journal of Functional Programming 2, 127-202.Google ScholarGoogle ScholarCross RefCross Ref
  19. SL Peyton Jones, CV Hall, K Hammond, WD Partain & PL Wadler {March 1993}, "The Glasgow Haskell compiler: a technical overview," in Proceedings of Joint Framework /or Information Technology Technical Conference, Keele, DTI/SERC, 249-257.Google ScholarGoogle Scholar
  20. SL Peyton Jones gc J Launchbury{Sept 1991}, "Unboxed values as first class citizens," in Functional Programming Languages and Computer Architecture, Boston, Hughes, ed., LNCS 523, Springer Verlag, 636-666. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. SL Peyton Jones ~ D Lester {May 1991}, "A modular fullylazy lambda lifter in HASKELL," Software - Practice and Experience 21,479-506. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. SL Peyton Jones & WD Partain {1993}, "Measuring the effectiveness of a simple strictness analyser," in Funciional Programming, Glasgow 1993, K Hammond & JT O'Donnell, eds., Workshops in Computing, Springer Verlag, 201-220.Google ScholarGoogle Scholar
  23. SL Peyton Jones & A Santos {1994}, "Compilation by transformation in the Glasgow Haskell Compiler," in Functional Programming, Glasgow 1994, K Hammond, DN Turner g~ PM Sansom, eds., Workshops in Computing, Springer Verlag, 184-204.Google ScholarGoogle Scholar
  24. A Santos {Sept 1995}, "Compilation by transformation in non-strict functional languages," PhD thesis, Department of Computing Science, Glasgow University.Google ScholarGoogle Scholar
  25. JE Smith {Oct 1988}, "Characterising computer performance with a single number," Communications of the A CM 31, 1202-1207. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Let-floating: moving bindings to give faster programs

      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
      • Published in

        cover image ACM Conferences
        ICFP '96: Proceedings of the first ACM SIGPLAN international conference on Functional programming
        June 1996
        273 pages
        ISBN:0897917707
        DOI:10.1145/232627

        Copyright © 1996 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 15 June 1996

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        ICFP '96 Paper Acceptance Rate25of83submissions,30%Overall Acceptance Rate333of1,064submissions,31%

        Upcoming Conference

        ICFP '24

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader