% % Included by profiling.lit % When you run your profiled program with the \tr{-p} RTS option \index{\tr{-p RTS option (profiling)}}, you get the following information about your ``cost centres'': \begin{description} %------------------------------------------------------------- \item[\tr{COST CENTRE}:] The cost-centre's name. %------------------------------------------------------------- \item[\tr{MODULE}:] The module associated with the cost-centre; important mostly if you have identically-named cost-centres in different modules. %------------------------------------------------------------- \item[\tr{scc}:] How many times this cost-centre was entered; think of it as ``I got to the \tr{_scc_} construct this many times...'' %------------------------------------------------------------- \item[\tr{%time}:] What part of the time was spent in this cost-centre (see also ``ticks,'' below). %------------------------------------------------------------- \item[\tr{%alloc}:] What part of the memory allocation was done in this cost-centre (see also ``bytes,'' below). %------------------------------------------------------------- \item[\tr{inner}:] How many times this cost-centre ``passed control'' to an inner cost-centre; for example, \tr{scc=4} plus \tr{subscc=8} means ``This \tr{_scc_} was entered four times, but went out to other \tr{_scc_s} eight times.'' %------------------------------------------------------------- \item[\tr{cafs}:] How many CAFs this cost centre evaluated. %------------------------------------------------------------- \item[\tr{dicts}:] How many dictionaries this cost centre evaluated. \end{description} In addition you can use the \tr{-P} RTS option \index{\tr{-P RTS option (profiling)}} to get the following additional information: \begin{description} %------------------------------------------------------------- \item[\tr{ticks}:] The raw number of time ``ticks'' which were attributed to this cost-centre; from this, we get the \tr{%time} figure mentioned above. %------------------------------------------------------------- \item[\tr{bytes}:] Number of bytes allocated in the heap while in this cost-centre; again, this is the raw number from which we get the \tr{%alloc} figure mentioned above. \end{description} Finally if you built your program with \tr{-prof-details} \index{\tr{-prof-details option}} the \tr{-P} RTS option will also produce the following information: \begin{description} %------------------------------------------------------------- \item[\tr{closures}:] How many heap objects were allocated; these objects may be of varying size. If you divide the number of bytes (mentioned below) by this number of ``closures'', then you will get the average object size. (Not too interesting, but still...) %------------------------------------------------------------- \item[\tr{thunks}:] How many times we entered (evaluated) a thunk---an unevaluated object in the heap---while we were in this cost-centre. %------------------------------------------------------------- \item[\tr{funcs}:] How many times we entered (evaluated) a function while we we in this cost-centre. (In Haskell, functions are first-class values and may be passed as arguments, returned as results, evaluated, and generally manipulated just like data values) %------------------------------------------------------------- \item[\tr{PAPs}:] How many times we entered (evaluated) a partial application (PAP), i.e., a function applied to fewer arguments than it needs. For example, \tr{Int} addition applied to one argument would be a PAP. A PAP is really just a particular form for a function. \end{description}