skip to main content
research-article
Public Access

Feature-Specific Profiling

Published:19 December 2018Publication History
Skip Abstract Section

Abstract

While high-level languages come with significant readability and maintainability benefits, their performance remains difficult to predict. For example, programmers may unknowingly use language features inappropriately, which cause their programs to run slower than expected. To address this issue, we introduce feature-specific profiling, a technique that reports performance costs in terms of linguistic constructs. Feature-specific profilers help programmers find expensive uses of specific features of their language. We describe the architecture of a profiler that implements our approach, explain prototypes of the profiler for two languages with different characteristics and implementation strategies, and provide empirical evidence for the approach’s general usefulness as a performance debugging tool.

References

  1. Gene M. Amdahl. 1967. Validity of the single processor approach to achieving large scale computing capabilities. In Proceedings of the Spring Joint Computer Conference. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Walter Binder, Danilo Ansaloni, Alex Villazón, and Philippe Moret. 2011. Flexible and efficient profiling with aspect-oriented programming. In Concurrency and Computation: Practice and Experience. John Wiley and Son, New York, 1749--1773. Retrieved from Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. John Clements, Matthew Flatt, and Matthias Felleisen. 2001. Modeling an algebraic stepper. In Proceedings of the European Symposium on Programming, 320--334. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. John Clements, Ayswarya Sundaram, and David Herman. 2008. Implementing continuation marks in JavaScript. In Proceedings of the Scheme and Functional Programming Workshop, 1--10.Google ScholarGoogle Scholar
  5. R. Kent Dybvig. 2009. Chez Scheme Version 8 User’s Guide. Cadence Research Systems.Google ScholarGoogle Scholar
  6. R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. 1993. Syntax abstraction in scheme. In LISP and Symbolic Computation. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Robert Bruce Findler, John Clements, Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, Paul Steckler, and Matthias Felleisen. 2002. DrScheme: A programming environment for scheme. J. Funct. Program. 12, 2 (2002), 159--182. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Robert Bruce Findler and Matthias Felleisen. 2002. Contracts for higher-order functions. In Proceedings of the International Conference on Functional Programming. Retrieved from Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Matthew Flatt and Eli Barzilay. 2009. Keyword and optional arguments in PLT scheme. In Proceedings of the Workshop on Scheme and Functional Programming.Google ScholarGoogle Scholar
  10. Matthew Flatt and PLT. 2010. Reference: Racket. PLT Inc., PLT-TR-2010-1. Retrieved from DOI:http://racket-lang.org/tr1/Google ScholarGoogle Scholar
  11. Tony Garnock-Jones, Sam Tobin-Hochstadt, and Matthias Felleisen. 2014. The network as a language construct. In Proceedings of the European Symposium on Programming Languages, 473--492. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Matthias Hauswirth, Peter F. Sweeney, Amer Diwan, and Michael Hind. 2004. Vertical profiling. In Proceedings of the ACM International Conference on Object-oriented Programming, Systems, Languages, and Applications, 251--269.Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Carl Hewitt, Peter Bishop, and Richard Steiger. 1973. A universal modular ACTOR formalism for artificial intelligence. In Proceedings of the International Joint Conference on Artificial Intelligence. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Milan Jovic and Matthias Hauswirth. 2011. Listener latency profiling. Sci. Comput. Program. 19, 4 (2011), 1054--1072. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Jonas Maebe, Dries Buytaert, Lieven Eeckhout, and Koen De Bosschere. 2006. Javana: A system for building customized Java program analysis tools. In Proceedings of the ACM International Conference on Object-oriented Programming, Systems, Languages, and Applications. Retrieved from Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Simon Marlow, José Iborra, Bernard Pope, and Andy Gill. 2007. A lightweight interactive debugger for Haskell. In Proceedings of the Haskell Workshop, 13--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Jay McCarthy. 2010. The two-state solution: Native and serializable continuations accord. In Proceedings of the ACM International Conference on Object-oriented Programming, Systems, Languages, and Applications, 567--582. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Scott Moore, Christos Dimoulas, Dan King, and Stephen Chong. 2014. SHILL: A secure shell scripting language. In Proceedings of the USENIX Symposium on Operating Systems Design and Implementation. Retrieved from https://www.usenix.org/conference/osdi14/technical-sessions/presentation/moore. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Floréal Morandat, Brandon Hill, Leo Osvald, and Jan Vitek. 2012. Evaluating the design of the R language. In Proceedings of the European Conference on Object-Oriented Programming. Retrieved fromGoogle ScholarGoogle ScholarDigital LibraryDigital Library
  20. Todd Mytkowicz, Amer Diwan, Matthias Hauswirth, and Peter F. Sweeney. 2010. Evaluating the accuracy of Java profilers. In Proceedings of the Conference on Programming Languages Design and Implementation, 187--197. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Nicholas Nethercote and Julian Seward. 2007. Valgrind: A framework for heavyweight dynamic binary instrumentation. In Proceedings of the Conference on Programming Languages Design and Implementation. Retrieved from Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Greg Pettyjohn, John Clements, Joe Marshall, Shriram Krishnamurthi, and Matthias Felleisen. 2005. Continuations from generalized stack inspection. In Proceedings of the International Conference on Functional Programming, 216--227. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. R Development Core Team. 2016. R Language Definition. R Development Core Team, 3.3.1. Retrieved from http://web.mit.edu/∼r/current/arch/amd64_linux26/lib/R/doc/manual/R-lang.pdf.Google ScholarGoogle Scholar
  24. Jeremy Singer and Chris Kirkham. 2008. Dynamic analysis of Java program concepts for visualization and profiling. Sci. Comput. Program. 70, 2--3 (2008), 111--126. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Vincent St-Amour, Leif Andersen, and Matthias Felleisen. 2012. Feature-specific profiling. In Proceedings of the International Conference on Compiler Construction. Retrieved fromGoogle ScholarGoogle Scholar
  26. Vincent St-Amour, Sam Tobin-Hochstadt, and Matthias Felleisen. 2012. Optimization coaching: Optimizers learn to communicate with programmers. In Proceedings of the ACM International Conference on Object-oriented Programming, Systems, Languages, and Applications, 163--178. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Juan M. Tamayo, Alex Aiken, Nathan Bronson, and Mooly Sagiv. 2012. Understanding the behavior of database operations under program control. In Proceedings of the ACM International Conference on Object-oriented Programming, Systems, Languages, and Applications, 983--996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Sam Tobin-Hochstadt and Matthias Felleisen. 2008. The design and implementation of typed scheme. In Proceedings of the Conference on Principles of Programming Languages, 395--406. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Hadley Wickham. 2014. Advanced R, 1st ed. Chapman and Hall/CRC. Retrieved from http://adv-r.had.co.nz/.Google ScholarGoogle Scholar

Index Terms

  1. Feature-Specific Profiling

          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

          Full Access

          • Published in

            cover image ACM Transactions on Programming Languages and Systems
            ACM Transactions on Programming Languages and Systems  Volume 41, Issue 1
            March 2019
            235 pages
            ISSN:0164-0925
            EISSN:1558-4593
            DOI:10.1145/3299867
            Issue’s Table of Contents

            Copyright © 2018 ACM

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 19 December 2018
            • Accepted: 1 September 2018
            • Revised: 1 May 2018
            • Received: 1 August 2017
            Published in toplas Volume 41, Issue 1

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article
            • Research
            • Refereed

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader

          HTML Format

          View this article in HTML Format .

          View HTML Format
          About Cookies On This Site

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

          Learn more

          Got it!