4.42 Execution profiling
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
      • Built-in Predicates
        • Execution profiling
          • Profiling predicates
            • profile/1
            • profile/2
            • show_profile/1
            • profiler/2
            • reset_profiler/0
            • noprofile/1
          • Visualizing profiling data
          • Information gathering
    • Packages

4.42.1 Profiling predicates

The following predicates are defined to interact with the profiler.

profile(:Goal)
Execute Goal just like once/1, collecting profiling statistics, and call show_profile([]). With XPCE installed this opens a graphical interface to examine the collected profiling data.
profile(:Goal, +Options)
Execute Goal just like once/1. Collect profiling statistics according to Options and call show_profile/1 with Options. The default collects CPU profiling and opens a graphical interface when provided, printing theā€˜plain' time usage of the top 25 predicates as a ballback. Options are described below. Remaining options are passed to show_profile/1.
time(+Which)
If Which is cpu (default), collect CPU timing statistics. If wall, collect wall time statistics based on a 5 millisecond sampling rate. Wall time statistics can be useful if Goal calls blocking system calls.
show_profile(+Options)
This predicate first calls prolog:show_profile_hook/1. If XPCE is loaded, this hook is used to activate a GUI interface to visualise the profile results. If not, a report is printed to the terminal according to Options:
top(+N)
Show the only top N predicates. Default is 25.
cumulative(+Bool)
If true (default false), include the time spent in children in the time reported for a predicate.
profiler(-Old, +New)
Query or change the status of the profiler. The status is one of
false
The profiler is not activated.
cputime
The profiler collects CPU statistics.
walltime
The profiler collects wall time statistics.

The value true is accepted as a synonym for cputime for compatibility reasons.

reset_profiler
Switches the profiler to false and clears all collected statistics.
noprofile(+Name/+Arity, ...)
Declares the predicate Name/Arity to be invisible to the profiler. The time spent in the named predicate is added to the caller, and the callees are linked directly to the caller. This is particularly useful for simple meta-predicates such as call/1, ignore/1, catch/3, etc.