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.
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- John Clements, Matthew Flatt, and Matthias Felleisen. 2001. Modeling an algebraic stepper. In Proceedings of the European Symposium on Programming, 320--334. Google Scholar
Digital Library
- 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 Scholar
- R. Kent Dybvig. 2009. Chez Scheme Version 8 User’s Guide. Cadence Research Systems.Google Scholar
- R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. 1993. Syntax abstraction in scheme. In LISP and Symbolic Computation. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Robert Bruce Findler and Matthias Felleisen. 2002. Contracts for higher-order functions. In Proceedings of the International Conference on Functional Programming. Retrieved from Google Scholar
Digital Library
- Matthew Flatt and Eli Barzilay. 2009. Keyword and optional arguments in PLT scheme. In Proceedings of the Workshop on Scheme and Functional Programming.Google Scholar
- Matthew Flatt and PLT. 2010. Reference: Racket. PLT Inc., PLT-TR-2010-1. Retrieved from DOI:http://racket-lang.org/tr1/Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Milan Jovic and Matthias Hauswirth. 2011. Listener latency profiling. Sci. Comput. Program. 19, 4 (2011), 1054--1072. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- Vincent St-Amour, Leif Andersen, and Matthias Felleisen. 2012. Feature-specific profiling. In Proceedings of the International Conference on Compiler Construction. Retrieved fromGoogle Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Hadley Wickham. 2014. Advanced R, 1st ed. Chapman and Hall/CRC. Retrieved from http://adv-r.had.co.nz/.Google Scholar
Index Terms
Feature-Specific Profiling
Recommendations
Profile-guided meta-programming
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationContemporary compiler systems such as GCC, .NET, and LLVM incorporate profile-guided optimizations (PGOs) on low-level intermediate code and basic blocks, with impressive results over purely static heuristics. Recent work shows that profile information ...
Profile-guided meta-programming
PLDI '15Contemporary compiler systems such as GCC, .NET, and LLVM incorporate profile-guided optimizations (PGOs) on low-level intermediate code and basic blocks, with impressive results over purely static heuristics. Recent work shows that profile information ...
Listener latency profiling: Measuring the perceptible performance of interactive Java applications
When developers need to improve the performance of their applications, they usually use one of the many existing profilers. These profilers generally capture a profile that represents the execution time spent in each method. The developer can thus focus ...






Comments