home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / EFFO / forum7.lzh / RICO / S_PROLOG / PROG / newlips.pl < prev    next >
Text File  |  1988-09-26  |  995b  |  40 lines

  1.  
  2. /* Use bench(N) to calculate LIPS performance */
  3.  
  4. /* Install cputime(X) */
  5. ?- channel(cputime,6).
  6.  
  7. nrev([],[]).
  8. nrev([X|Rest],Ans) :- nrev(Rest,L), my_append(L,[X],Ans).
  9.  
  10. my_append([],L,L).
  11. my_append([X|L1],L2,[X|L3]) :- my_append(L1,L2,L3).
  12.  
  13. bench(Count) :- cputime(T0),dodummy(Count),cputime(T1),
  14.     dobench(Count),cputime(T2),
  15.     report(Count,T0,T1,T2).
  16.  
  17. dobench(Count) :- data(List),my_repeat(Count),nrev(List,_),fail.
  18. dobench(_).
  19.  
  20. dodummy(Count) :- data(List),my_repeat(Count),dummy(List,_),fail.
  21. dodummy(_).
  22.  
  23. dummy(_,_).
  24.  
  25. data(X) :- data(X,30).
  26. data([],0).
  27. data([a|Y],N) :- N > 0, N1 is N - 1, data(Y,N1).
  28. /* data([a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,bb,cc,dd]). */
  29.  
  30. my_repeat(N).
  31. my_repeat(N) :- N > 1, N1 is N - 1, my_repeat(N1).
  32.  
  33. report(Count,T0,T1,T2) :- write(T0),nl,write(T1),nl,write(T2),nl,
  34.     Time1 is T1 - T0,write(Time1),nl,
  35.     Time2 is T2 - T1,write(Time2),nl,
  36.     Time is Time2 - Time1,write(Time),nl,
  37.     Lips is (496 * Count)/Time,
  38.     write('Lips = '),write(Lips), nl.
  39.  
  40.