
profile(+Goal, ++Options)

   Execute Goal (once) and print the time spent in each predicate.

Arguments
   Goal                Callable term
   Options             List of options

Type
   library(profile)

Description

    Runs the given goal with the sampling profiler, which collects
    information about the currently executing predicate 100 times
    per second.  After the goal finishes, a result table is printed.

    ECLiPSe must have been started with the -P command line option
    (or equivalent) in order to support profiling.  It is, however, not
    necessary to compile the profiled code in a particular way; the profiler
    works independently of compiler optimizations and debug mode.

    Possible options:
    
    keep_file
	don't destroy the samples file <tmp_dir>/eclipse.prof.<pid>
	that is used to collect profiling information during execution.
	Without this option, the file is automatically deleted.
    

    Notes:
    
    Garbage collection time is shown as predicate garbage_collect/0,
    even when garbage collection was automatically triggered.
    The time spent in simple predicates (i.e. those with call_type
    external, written in C) is counted towards their parent predicate.
    In cases where the predicate name is not available, e.g. local goals in
    a locked module, the information is grouped under a blank predicate
    name entry for the module.
    
    

Modes and Determinism
   profile(+, ++) is det

Modules
   This predicate is sensitive to its module context (tool predicate, see @/2).

Examples
   
?- profile(length(_,100000000), []).

		  PROFILING STATISTICS
		  --------------------
Goal:		  length(_80, 100000000)
Result:		  success
Sampling rate:	  every 0.01s process_cputime
Samples taken:	  182
Thread cputime:	  1.82s

Predicate	      Module	    %Time    Time   %Cum
---------------------------------------------------------
length            /2  sepia_kernel  79.7%    1.45s  79.7%
garbage_collect   /0  sepia_kernel  20.3%    0.37s 100.0%

Yes (1.86s cpu)


See Also
   get_flag / 2, profile / 1
