Como medir o tempo de execução no SWI-Prolog

Se você planeja fazer cálculos pesados ​​no Prolog, provavelmente deseja registrar quanto tempo é gasto em um predicado.
Para fazer isso, você pode contar com o statisticspredicado em conjunto com o walltimeparâmetro atom.

?- statistics(walltime, [TimeSinceStart | [TimeSinceLastCall]]),
some_heavy_operation
,
statistics
(walltime, [NewTimeSinceStart | [ExecutionTime]]),
write
('Execution took '), write(ExecutionTime), write(' ms.'), nl.

statistics(walltime, Result)define Resultcomo uma lista, com o início sendo o tempo total desde que a instância do Prolog foi iniciada e o final sendo uma lista de elemento único representando o tempo desde a última statistics(walltime, _)chamada foi feita.

Referência : estatísticas / 2