home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / b / binprolog / !BinPro330 / progs / qbrev < prev    next >
Encoding:
Text File  |  1994-02-21  |  1.5 KB  |  79 lines

  1. nrev([],[]).
  2. nrev([X|Xs],R):-
  3.   nrev(Xs,T),
  4.   det_append(T,[X],R).
  5.  
  6. full_range(It,L):- range(_,1,It),nrev(L,_), fail.
  7. full_range(_,_).
  8.  
  9. dummy(_,_).
  10.  
  11. empty_range(It,L):-range(_,1,It),dummy(L,_),fail.
  12. empty_range(_,_).
  13.  
  14. range(Min,Min,Max):-Min=<Max.
  15. range(I,Min,Max):-
  16.         Min<Max,
  17.         Min1 is Min+1,
  18.         range(I,Min1,Max).
  19.  
  20. integers([],I,I):-!.
  21. integers([I0|L],I0,I):-I0<I,I1 is I0+1,integers(L,I1,I).
  22.  
  23. bm(It,Len,Time,Lips):-
  24.     integers(L,0,Len),
  25.     timer(T0),
  26.     empty_range(It,L),
  27.     timer(T1),
  28.     full_range(It,L),
  29.     timer(T2),
  30.     Time is (T2-T1)-(T1-T0),
  31.     L1 is Len+1,
  32.     L2 is Len+2,
  33.     LI is (L1*L2)/2,
  34.     LIs is It*LI,
  35.     Lips is (LIs/Time)/1000.0.
  36.  
  37. htest(N,H,T,S):-
  38.         integers(Is,0,N),
  39.         statistics(global_stack,[H1,_]),
  40.         statistics(trail,[T1,_]),
  41.         statistics(local_stack,[S1,_]),
  42.         nrev(Is,_),
  43.         statistics(global_stack,[H2,_]),
  44.         statistics(trail,[T2,_]),
  45.         statistics(local_stack,[S2,_]),
  46.         H is H2-H1,T is T2-T1,S is S2-S1.
  47.  
  48. go(Mes,Len,It):-
  49.     bm(It,Len,T,L),
  50.         nl,write(Mes=[klips=L]),nl,
  51.     write([time=T,length=Len,iterations=It]),nl,
  52.     htest(Len,H,Tr,S),
  53.     nl,write(Mes=[heap=H,trail=Tr,stack=S]),nl.
  54.  
  55. gg:-go(50,100).
  56.  
  57. g0:-go(100,200).
  58.  
  59. g1:-go(100,800).
  60.  
  61. g2:-go(200,200).
  62.  
  63. g3:-write('use bp -h20000'),nl,go(2000,1).
  64.  
  65. go(L,I):-go(test,L,I).
  66.  
  67. go:-go('BMARK_qbrev:').
  68.  
  69. go(Mes):-
  70.     Len=300,
  71.     It=300,
  72.     go(Mes,Len,It).
  73.  
  74. timer(T):-statistics(runtime,[T0,_]),T is T0/1000.0.
  75. %timer(T):-statistics(cputime,T).
  76. %timer(T):-T is cputime.
  77.  
  78. p:-[qbrev].
  79.