- Documentation
- Reference manual
- The SWI-Prolog library
- library(aggregate): Aggregation operators on backtrackable predicates
- library(ansi_term): Print decorated text to ANSI consoles
- library(apply): Apply predicates on a list
- library(assoc): Association lists
- library(broadcast): Broadcast and receive event notifications
- library(charsio): I/O on Lists of Character Codes
- library(check): Consistency checking
- library(clpb): CLP(B): Constraint Logic Programming over Boolean Variables
- library(clpfd): CLP(FD): Constraint Logic Programming over Finite Domains
- library(clpqr): Constraint Logic Programming over Rationals and Reals
- library(csv): Process CSV (Comma-Separated Values) data
- library(dcg/basics): Various general DCG utilities
- library(dcg/high_order): High order grammar operations
- library(debug): Print debug messages and test assertions
- library(dicts): Dict utilities
- library(error): Error generating support
- library(fastrw): Fast reading and writing of terms
- library(gensym): Generate unique symbols
- library(heaps): heaps/priority queues
- library(increval): Incremental dynamic predicate modification
- library(intercept): Intercept and signal interface
- library(iostream): Utilities to deal with streams
- library(listing): List programs and pretty print clauses
- library(lists): List Manipulation
- library(main): Provide entry point for scripts
- library(nb_set): Non-backtrackable set
- library(www_browser): Open a URL in the users browser
- library(occurs): Finding and counting sub-terms
- library(option): Option list processing
- library(optparse): command line parsing
- library(ordsets): Ordered set manipulation
- library(pairs): Operations on key-value lists
- library(persistency): Provide persistent dynamic predicates
- library(pio): Pure I/O
- library(portray_text): Portray text
- library(predicate_options): Declare option-processing of predicates
- library(prolog_debug): User level debugging tools
- library(prolog_jiti): Just In Time Indexing (JITI) utilities
- library(prolog_pack): A package manager for Prolog
- library(prolog_xref): Prolog cross-referencer data collection
- library(quasi_quotations): Define Quasi Quotation syntax
- library(random): Random numbers
- library(rbtrees): Red black trees
- library(readutil): Read utilities
- library(record): Access named fields in a term
- library(registry): Manipulating the Windows registry
- library(settings): Setting management
- library(statistics): Get information about resource usage
- library(strings): String utilities
- library(simplex): Solve linear programming problems
- library(solution_sequences): Modify solution sequences
- library(tables): XSB interface to tables
- library(terms): Term manipulation
- library(thread): High level thread primitives
- library(thread_pool): Resource bounded thread management
- library(ugraphs): Graph manipulation library
- library(url): Analysing and constructing URL
- library(varnumbers): Utilities for numbered terms
- library(yall): Lambda expressions
- The SWI-Prolog library
- Packages
- Reference manual
A.48 library(statistics): 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.
- [det]statistics
- Print information about resource usage using print_message/2.
- See also
- All statistics printed are obtained through statistics/2.
- [det]statistics(-Stats:dict)
- 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.
- [nondet]thread_statistics(?Thread, -Stats:dict)
- Obtain statistical information about a single thread. Fails silently of
the Thread is no longer alive.
Stats is a dict containing status, time and stack-size information about Thread. - [nondet]time(:Goal)
- 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.
- See also
- - statistics/2
for obtaining statistics in your program and understanding the reported
values.
- call_time/2, call_time/3 to obtain the timing in a dict. - bug
- Inference statistics are often a few off.
- 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. Currently Time contains the keys below.
Future versions may provide additional keys.
- wall:Seconds
- cpu:Seconds
- inferences:Count
Result is one of true
orfalse
depending on whether or not the goal succeeded. - profile(:Goal)
- profile(:Goal, +Options)
- Run Goal under the execution profiler. Defined options are:
- time(Which)
- Profile
cpu
orwall
time. The default is CPU time. - top(N)
- When generating a textual report, show the top N predicates.
- cumulative(Bool)
- If
true
(defaultfalse
), show cumulative output in a textual report.
- show_profile(+Options)
- Display last collected profiling data. Options are
- top(N)
- When generating a textual report, show the top N predicates.
- cumulative(Bool)
- If
true
(defaultfalse
), show cumulative output in a textual report.
- [det]profile_data(-Data)
- Gather all relevant data from profiler. This predicate may be called
while profiling is active in which case it is suspended while collecting
the data. Data is a dict providing the following fields:
summary
:
Dict- Overall statistics providing
- samples:Count: Times the statistical profiler was called
- ticks:Count Virtual ticks during profiling
- accounting:Count Tick spent on accounting
- time:Seconds Total time sampled
- nodes:Count Nodes in the call graph.
- nodes
- List of nodes. Each node provides:
- predicate:PredicateIndicator
- ticks_self:Count
- ticks_siblings:Count
- call:Count
- redo:Count
- exit:Count
- callers:
list_of(Relative)
- callees:
list_of(Relative)
Relative is a term of the shape below that represents a caller or callee. Future versions are likely to use a dict instead.
node(PredicateIndicator, CycleID, Ticks, TicksSiblings, Calls, Redos, Exits)
- [nondet]profile_procedure_data(?Pred, -Data:dict)
- Collect data for Pred. If Pred is unbound data for
each predicate that has profile data available is returned. Data
is described in
profile_data/1
as an element of the
nodes
key.