/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*
*/
 
mk_list(0,[]).
mk_list(N,[N|L]) :-
N1 is N-1, mk_list(N1,L).
 
/*  Get an average cpu time for 5 different parameters  */
 
test_sort :-
nl, write('!**  BEGIN BuiltinSort BENCHMARK'), nl,
ave_sort(10),
ave_sort(20),
ave_sort(30),
ave_sort(40),
ave_sort(50),
nl, write('!**  END BuiltinSort BENCHMARK'), nl.
 
/*  call the benchmark 3 times and calculate the average  */
 
ave_sort(P) :-
call_sort(P,T1),
call_sort(P,T2),
call_sort(P,T3),
calc_ave_sort(P,T1,T2,T3).
 
/*  call benchmark and return cputime in msecs.  */
 
call_sort(P,T) :-
mk_list(P,L),
T1 is cputime,
sort(L,_),
T2 is cputime,
T is 1000*(T2-T1).
 
/*  calculate average of 3 times for parameter P  */
 
calc_ave_sort(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' sort is '),
write(Ave), write(' msecs.'), nl.
 
:- test_sort.
 
