[ Development Environment and Global Settings | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

profile(+Goal, +Flags)

Profile the goal and print the times spent in each predicate.
+Goal
Atom or a compound term.
+Flags
List of atoms.

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.

Fail Conditions

None

Resatisfiable

No

Exceptions

(6) out of range
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