ADDED: library(time), providing time/1 for benchmarking

sleep/1 and predicates for reasoning about time stamps should also
be added to this library.
This commit is contained in:
Markus Triska
2020-04-19 19:13:27 +02:00
parent cae0733149
commit 4693c23a49
5 changed files with 77 additions and 1 deletions

51
src/prolog/lib/time.pl Normal file
View File

@@ -0,0 +1,51 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Written April 2020 by Markus Triska (triska@metalevel.at)
Part of Scryer Prolog.
This library provides predicates for reasoning about time.
sleep/1 should be implemented here, sleeping for a number of seconds.
In addition, this library should provide reasoning about time stamps.
'$cpu_new' can be replaced by statistics/2 once that is implemented.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
:- module(time, [time/1]).
:- use_module(library(format)).
:- use_module(library(iso_ext)).
time(Goal) :-
'$cpu_now'(T0),
Goal,
'$cpu_now'(T),
Time is T - T0,
( bb_get('$first_answer', true) ->
format(" % CPU time: ~3f seconds~n", [Time])
; format("% CPU time: ~3f seconds~n ", [Time])
).
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?- time((true;false)).
% CPU time: 0.000 seconds
true
; false.
:- time(use_module(library(clpz))).
% CPU time: 2.762 seconds
true
; false.
:- time(use_module(library(lists))).
% CPU time: 0.000 seconds
true
; false.
?- time(member(X, [a,b,c])).
% CPU time: 0.000 seconds
X = a
; % CPU time: 0.002 seconds
X = b
; % CPU time: 0.004 seconds
X = c
; false.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */