eprof

A Time Profiling Tool for Erlang

The module eprof provides a set of functions for time
profiling of Erlang programs to find out how the execution time is
used. The profiling is done using the Erlang trace BIFs. Tracing of
local function calls for a specified set of processes is enabled when
profiling is begun, and disabled when profiling is stopped.

This function first spawns a process P which evaluates
Fun() or apply(Module,Function,Args). Then, it
starts profiling for P and the processes in Rootset
(and any new processes spawned from them). Information about
activity in any profiled process is stored in the Eprof database.

Rootset is a list of pids and registered names.

If tracing could be enabled for P and all processes in
Rootset, the function returns {ok,Value} when
Fun()/apply returns with the value Value, or
{error,Reason} if Fun()/apply fails with
exit reason Reason. Otherwise it returns {error, Reason}
immediately.

The programmer must ensure that the function given as argument
is truly synchronous and that no work continues after
the function has returned a value.

analyze() -> ok

analyze(Type) -> ok

analyze(Type,Options) -> ok

Type = procs | total

Options = [{filter, Filter} | {sort, Sort}

Filter = [{calls, integer()} | {time, float()}]

Sort = time | calls | mfa

Call this function when profiling has been stopped to display
the results per process, that is:

how much time has been used by each process, andin which function calls this time has been spent.

Call analyze with total option when profiling has been stopped to display
the results per function call, that is in which function calls
the time has been spent.

Time is shown as percentage of total time and as absolute time.

log(File) -> ok

File = atom() | string()

This function ensures that the results displayed by
analyze/0,1,2 are printed both to
the file File and the screen.