
profile(+Goal, +Flags)

   Profile the goal and print the times spent in each predicate.



Arguments
   +Goal               Atom or a compound term.
   +Flags              List of atoms.

Type
   Development Environment and Global Settings

Description
   This predicate invokes the profiler.  The profiler first executes Goal
   in profiling mode, which means that during its execution interrupts are
   generated at regular intervals and the profiler remembers the currently
   executing procedure.  When the goal succeeds or fails, the profiler
   prints so and then it prints the statistics about the time spent in
   every encountered procedure.  Goal can be any Prolog goal, it does not
   have to be compiled in a special profiling mode and no Prolog flags have
   to be set.


   Flags is a list of flags, currently only simple is recognised and it
   tells the profiler to count the simple predicates (i.e.  those with
   call_type prolog, written in C) separately.  If no flag is specified,
   the time spent in simple predicates is counted to their parent clause.


   A temporary file /tmp/eclipse.prof.<pid> is used to store the profiling
   information and is removed upon exit.




Resatisfiable
      No

Fail Conditions
      None



Exceptions
     6 --- Flags contains an illegal flag.

Examples
   
[eclipse 6]: profile(boyer, [simple]).
rewriting...
proving...
goal succeeded

                PROFILING STATISTICS
                --------------------

Goal:             boyer
Total user time:  10.55s

Predicate             Module         %Time  Time
-------------------------------------------------
=..               /2  sepia_kernel   31.1%  3.28s
garbage_collect   /0  sepia_kernel   23.5%  2.48s
rewrite           /2  eclipse        21.6%  2.28s
rewrite_args      /2  eclipse        17.2%  1.82s
equal             /2  eclipse         4.1%  0.43s
remainder         /3  eclipse         0.9%  0.10s
...
plus              /3  eclipse         0.1%  0.01s

yes.






See Also
   get_flag / 2, profile / 1
