Difference between revisions of "Profiling"

From Notes_Wiki
m
m (Undo revision 1531 by Saurabh (talk))
Line 5: Line 5:
To profile Erlang programs for function call time use:
To profile Erlang programs for function call time use:
<pre>
<pre>
1> fproc:apply(fun mod:name/arity, [Args]).
1> fprof:apply(fun mod:name/arity, [Args]).
2> fproc:profile().
2> fprof:profile().
3> fproc:analyse().
3> fprof:analyse().
</pre>
</pre>
This is useful for sequential programs so that time taken by each function can be compared.
This is useful for sequential programs so that time taken by each function can be compared.

Revision as of 01:34, 8 February 2014

<yambe:breadcrumb>Erlang|Erlang</yambe:breadcrumb>

Profiling

Function call time profiling

To profile Erlang programs for function call time use:

1> fprof:apply(fun mod:name/arity, [Args]).
2> fprof:profile().
3> fprof:analyse().

This is useful for sequential programs so that time taken by each function can be compared.


Concurrency profiling

To profile Erlang programs for concurrency use:

1> percept:profile("test.dat", {Mod, Fun, Args_list}, [procs]).
2> percept:analyze("test.dat").
3> percept:start_webserver(8888).

and then open http://localhost:8888/ to see the concurrency profile with number of processes spawned and runnable time for each process. For more information refer to percept app tutorial at http://www.erlang.org/doc/apps/percept/percept.pdf


Use "erl -man fprof" and see analysis example at end of man page for more details.