If you plan on doing some heavy computation in Prolog you probably want to log how much time gets spent on a predicate.
To do so, you can rely on the statistics
predicate in conjunction with the walltime
atom parameter.
?- statistics(walltime, [TimeSinceStart | [TimeSinceLastCall]]),
some_heavy_operation,
statistics(walltime, [NewTimeSinceStart | [ExecutionTime]]),
write('Execution took '), write(ExecutionTime), write(' ms.'), nl.
statistics(walltime, Result)
sets Result
as a list, with the head being the total time since the Prolog instance was started, and the tail being a single-element list representing the time since the last statistics(walltime, _)
call was made.
Reference: statistics/2