==History==
Performance -analysis tools existed on [[IBM/360]] and [[IBM/370]] platforms from the early 1970s, usually based on timer interrupts which recorded the [[Program status word]] (PSW) at set timer -intervals to detect "hot spots" in executing code. This was an early example of [[Sampling (statistics)|sampling]] (see below). In early 1974, [[Instruction Set Simulator | instruction-set simulator]]s permitted full trace and other performance -monitoring features.
Profiler-driven program analysis on Unix dates back to at least 1979, when Unix systems included a basic tool, "<code>prof"</code>, thatwhich listed each function and how much of program execution time it used. In 1982, <code>gprof</code> extended the concept to a complete [[call graph]] analysis.<ref name="gprof"> S.L. Graham, P.B. Kessler, and M.K. McKusick, [http://docs.freebsd.org/44doc/psd/18.gprof/paper.pdf ''gprof: a Call Graph Execution Profiler''], Proceedings of the SIGPLAN '82 Symposium on Compiler Construction, SIGPLAN Notices, Vol. 17, No 6, pp. 120-126; [[doi:10.1145/800230.806987]]</ref>
In 1994, Amitabh Srivastava and Alan Eustace of [[Digital Equipment Corporation]] published a paper describing ATOM.<ref> A. Srivastava and A. Eustace, [http://www.ece.cmu.edu/~ece548/tools/atom/man/wrl_94_2.pdf ''AtomATOM: A system for building customized program analysis tools''], Proceedings of the ACM SIGPLAN Conference on Programming language design and implementation (PLDI '94), pp. 196-205, 1994; ACM SIGPLAN Notices - Best of PLDI 1979-1999 Homepage archive, Vol. 39, No. 4, pp. 528-539; [[doi:10.1145/989393.989446]] </ref> (Analysis ATOMTools iswith aOM). The ATOM platform for convertingconverts a program into its own profiler. That is,: at [[compile time]], it inserts code into the program to be analyzed. That inserted code outputs analysis data. This technique - modifying a program to analyze itself - is known as "[[Instrumentation (computer programming)|instrumentation]]".
In 2004, both the <code>gprof</code> and ATOM papers appeared on the list of the 50 most influential [[Conference on Programming Language Design and Implementation|PLDI]] papers of all time.<ref> [http://www.cs.utexas.edu/users/mckinley/20-years.html 20 Years of PLDI (1979–1999): A Selection, Kathryn S. McKinley, Editor]</ref>
==Profiler types based on output ==
|