statistics.pl -- Get information about resource usage
This library provides predicates to obtain information about resource usage by your program. The predicates of this library are for human use at the toplevel: information is printed. All predicates obtain their information using public low-level primitives. These primitives can be use to obtain selective statistics during execution.
- statistics is det
- Print information about resource usage using print_message/2.
- statistics(-Stats:dict) is det
- Stats is a dict representing the same information as statistics/0. This convience function is primarily intended to pass statistical information to e.g., a web client. Time critical code that wishes to collect statistics typically only need a small subset and should use statistics/2 to obtain exactly the data they need.
- thread_statistics(?Thread, -Stats:dict) is nondet
- Obtain statistical information about a single thread. Fails silently of the Thread is no longer alive.
- time(:Goal) is nondet
- Execute Goal, reporting statistics to the user. If Goal succeeds
non-deterministically, retrying reports the statistics for
providing the next answer.
Statistics are retrieved using thread_statistics/3 on the calling thread. Note that not all systems support thread-specific CPU time. Notable, this is lacking on MacOS X.
- call_time(:Goal, -Time:dict)
- call_time(:Goal, -Time:dict, -Result)
- Call Goal as call/1, unifying Time with a dict that provides
information on the resource usage. If Goal succeeds with a choice
point, backtracking reports the time used to find the next answer,
failure or exception. If Goal succeeds deterministically no choice
point is left open. Currently Time contains the keys below. Future
versions may provide additional keys.
call_time/2 is defined as below. Note that for call_time/2 the time is only available if Goal succeeds.
call_time(Goal, Time) :- call_time(Goal, Time, Result), call(Result).
The following predicates are exported, but not or incorrectly documented.