In computer programming, a profiler is a computer program that can track the performance of another program by checking information collected while the code is executed . A profiler can identify the time used by or frequency of use of various portions of a the second program. Typically this information is used to identify those portions of the second program that consume the most time. These time consuming parts are then targeted for optimization. Also a profiler can be useful for debugging. Like a debugger, it is often used with a front-end (front-ends to profilers are more specific to each profiler). Computer programming (often simply programming) is the craft of implementing one or more interrelated abstract algorithms using a particular programming language to produce a concrete computer program. ... A computer program (often simply called a program) is an example of computer software that prescribes the actions (computations) that are to be carried out by a computer. ... A street musician with accordion in Bremen A performance comprises an event in which generally one group of people (the performer or performers) behave in a particular way for the benefit of another group of people (the viewer or viewers, or audience). ... In mathematics, optimization is the discipline which is concerned with finding the maxima and minima of functions, possibly subject to constraints. ... Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware thus making it behave as expected. ... A debugger is a computer program that is used to debug (and sometimes test or optimize) other programs. ... In their most general meanings, the terms front end and back end refer to the initial and the end stages of a process flow. ...
Profilers vary in accuracy and specificity. Some profilers operate by Sampling (statistics). A sampling profiler probes the second program at regular intervals and notes the current location in the second program. Sampling profiles are typically less accurate and specific, but allow the second program to run at near full speed. Some profilers instrument the second program with additional instructions to collect the required information. Instrumenting the program can cause changes in the performance of the program, causing inaccurate results. Instrumenting can potentially be very specific but slows down the second program as more specific information is collected. Sampling is that part of statistical practice concerned with the selection of individual observations intended to yield some knowledge about a population of concern, especially for the purposes of statistical inference. ...
It is common for computer programmers to "hand profile" software, typically by hand instrumenting their software.
gprof (http://www.cs.utah.edu/dept/old/texinfo/as/gprof_toc.html) The GNU Profiler, part of GNU Binutils (which are part of the GNU project); you can use some visualisation tools called VCG tools (http://rw4.cs.uni-sb.de/~sander/html/gsvcg1.html) and combine both of them using Call Graph Drawing Interface (http://www.ida.liu.se/~vaden/cgdi) (CGDI); a second solution is kprof (http://kprof.sourceforge.net/). More for C/C++ but works well for other languages.
FunctionCheck (http://www710.univ-lyon1.fr/~yperret/fnccheck/profiler.html) is a profiler that was created "because the well known profiler gprof have some limitations". using special GCC tricks. kprof (http://kprof.sourceforge.net/) is a front-end. For C++/C.
Valgrind (http://valgrind.kde.org/) is a GPL'd system for debugging and profiling x86-Linux programs. You can automatically detect many memory management and threading bugs. alleyoop (http://alleyoop.sourceforge.net/) is a front-end for valgrind. It works for any language and the assembler.
Proprietary
under Windows
glowcode (http://www.glowcode.com/) is a popular profiler for Windows.
A memory debugger is a programming tool for finding memory leaks and buffer overflows. ... Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware thus making it behave as expected. ... A debugger is a computer program that is used to debug (and sometimes test or optimize) other programs. ...
Profiler Data Critical to NWS Forecasters During the Oklahoma Tornado Outbreak of 1999
The data from the Tucumcari, NM profiler (among others) was outstanding and clearly showed upper level winds increasing in speed and descending in height as the day progressed.
the computer models failed miserably with this event and it was the observational data from the profilers that tipped the scales toward a successful forecast.