2004-03-02 16:46:07 +00:00
|
|
|
/*************************************************************************
|
|
|
|
* *
|
|
|
|
* YAP Prolog *
|
|
|
|
* *
|
|
|
|
* Yap Prolog was developed at NCCUP - Universidade do Porto *
|
|
|
|
* *
|
|
|
|
* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997 *
|
|
|
|
* *
|
|
|
|
**************************************************************************
|
|
|
|
* *
|
|
|
|
* File: statistics.yap *
|
|
|
|
* Last rev: 8/2/88 *
|
|
|
|
* mods: *
|
|
|
|
* comments: statistics on Prolog status *
|
|
|
|
* *
|
|
|
|
*************************************************************************/
|
|
|
|
|
|
|
|
%%% User interface for statistics
|
|
|
|
|
|
|
|
statistics :-
|
|
|
|
'$runtime'(Runtime,_),
|
|
|
|
'$cputime'(CPUtime,_),
|
|
|
|
'$walltime'(Walltime,_),
|
|
|
|
'$statistics_heap_info'(HpSpa, HpInUse),
|
|
|
|
'$statistics_heap_max'(HpMax),
|
|
|
|
'$statistics_trail_info'(TrlSpa, TrlInUse),
|
|
|
|
'$statistics_trail_max'(TrlMax),
|
|
|
|
'$statistics_stacks_info'(StkSpa, GlobInU, LocInU),
|
|
|
|
'$statistics_global_max'(GlobMax),
|
|
|
|
'$statistics_local_max'(LocMax),
|
|
|
|
'$inform_heap_overflows'(NOfHO,TotHOTime),
|
|
|
|
'$inform_stack_overflows'(NOfSO,TotSOTime),
|
|
|
|
'$inform_trail_overflows'(NOfTO,TotTOTime),
|
|
|
|
'$inform_gc'(NOfGC,TotGCTime,TotGCSize),
|
|
|
|
'$inform_agc'(NOfAGC,TotAGCTime,TotAGCSize),
|
|
|
|
'$statistics'(Runtime,CPUtime,Walltime,HpSpa,HpInUse,HpMax,TrlSpa, TrlInUse,TrlMax,StkSpa, GlobInU, LocInU,GlobMax,LocMax,NOfHO,TotHOTime,NOfSO,TotSOTime,NOfTO,TotTOTime,NOfGC,TotGCTime,TotGCSize,NOfAGC,TotAGCTime,TotAGCSize).
|
|
|
|
|
|
|
|
'$statistics'(Runtime,CPUtime,Walltime,HpSpa,HpInUse,HpMax,TrlSpa, TrlInUse,_TrlMax,StkSpa, GlobInU, LocInU,GlobMax,LocMax,NOfHO,TotHOTime,NOfSO,TotSOTime,NOfTO,TotTOTime,NOfGC,TotGCTime,TotGCSize,NOfAGC,TotAGCTime,TotAGCSize) :-
|
|
|
|
TotalMemory is HpSpa+StkSpa+TrlSpa,
|
2004-07-22 22:32:23 +01:00
|
|
|
format(user_error,"memory (total)~t~d bytes~35+~n", [TotalMemory]),
|
|
|
|
format(user_error," program space~t~d bytes~35+", [HpSpa]),
|
|
|
|
format(user_error,":~t ~d in use~19+", [HpInUse]),
|
2004-03-02 16:46:07 +00:00
|
|
|
HpFree is HpSpa-HpInUse,
|
2004-07-22 22:32:23 +01:00
|
|
|
format(user_error,",~t ~d free~19+~n", [HpFree]),
|
|
|
|
format(user_error,"~t ~d max~73+~n", [HpMax]),
|
|
|
|
format(user_error," stack space~t~d bytes~35+", [StkSpa]),
|
2004-03-02 16:46:07 +00:00
|
|
|
StackInUse is GlobInU+LocInU,
|
2004-07-22 22:32:23 +01:00
|
|
|
format(user_error,":~t ~d in use~19+", [StackInUse]),
|
2004-03-02 16:46:07 +00:00
|
|
|
StackFree is StkSpa-StackInUse,
|
2004-07-22 22:32:23 +01:00
|
|
|
format(user_error,",~t ~d free~19+~n", [StackFree]),
|
|
|
|
format(user_error," global stack:~t~35+", []),
|
|
|
|
format(user_error," ~t ~d in use~19+", [GlobInU]),
|
|
|
|
format(user_error,",~t ~d max~19+~n", [GlobMax]),
|
|
|
|
format(user_error," local stack:~t~35+", []),
|
|
|
|
format(user_error," ~t ~d in use~19+", [LocInU]),
|
|
|
|
format(user_error,",~t ~d max~19+~n", [LocMax]),
|
|
|
|
format(user_error," trail stack~t~d bytes~35+", [TrlSpa]),
|
|
|
|
format(user_error,":~t ~d in use~19+", [TrlInUse]),
|
2004-03-02 16:46:07 +00:00
|
|
|
TrlFree is TrlSpa-TrlInUse,
|
2004-07-22 22:32:23 +01:00
|
|
|
format(user_error,",~t ~d free~19+~n", [TrlFree]),
|
2004-03-02 16:46:07 +00:00
|
|
|
OvfTime is (TotHOTime+TotSOTime+TotTOTime)/1000,
|
2004-07-22 22:32:23 +01:00
|
|
|
format(user_error,"~n~t~3f~12+ sec. for ~w code, ~w stack, and ~w trail space overflows~n",
|
2004-03-02 16:46:07 +00:00
|
|
|
[OvfTime,NOfHO,NOfSO,NOfTO]),
|
|
|
|
TotGCTimeF is float(TotGCTime)/1000,
|
2004-07-22 22:32:23 +01:00
|
|
|
format(user_error,"~t~3f~12+ sec. for ~w garbage collections which collected ~d bytes~n",
|
2004-03-02 16:46:07 +00:00
|
|
|
[TotGCTimeF,NOfGC,TotGCSize]),
|
|
|
|
TotAGCTimeF is float(TotAGCTime)/1000,
|
2004-07-22 22:32:23 +01:00
|
|
|
format(user_error,"~t~3f~12+ sec. for ~w atom garbage collections which collected ~d bytes~n",
|
2004-03-02 16:46:07 +00:00
|
|
|
[TotAGCTimeF,NOfAGC,TotAGCSize]),
|
|
|
|
RTime is float(Runtime)/1000,
|
2004-07-22 22:32:23 +01:00
|
|
|
format(user_error,"~t~3f~12+ sec. runtime~n", [RTime]),
|
2004-03-02 16:46:07 +00:00
|
|
|
CPUTime is float(CPUtime)/1000,
|
2004-07-22 22:32:23 +01:00
|
|
|
format(user_error,"~t~3f~12+ sec. cputime~n", [CPUTime]),
|
2004-03-02 16:46:07 +00:00
|
|
|
WallTime is float(Walltime)/1000,
|
2004-07-22 22:32:23 +01:00
|
|
|
format(user_error,"~t~3f~12+ sec. elapsed time~n~n", [WallTime]),
|
2004-03-02 16:46:07 +00:00
|
|
|
fail.
|
|
|
|
'$statistics'(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_).
|
|
|
|
|
|
|
|
statistics(runtime,[T,L]) :-
|
|
|
|
'$runtime'(T,L).
|
|
|
|
statistics(cputime,[T,L]) :-
|
|
|
|
'$cputime'(T,L).
|
|
|
|
statistics(walltime,[T,L]) :-
|
|
|
|
'$walltime'(T,L).
|
|
|
|
statistics(threads,NT) :-
|
|
|
|
'$nof_threads'(NT).
|
|
|
|
statistics(threads_created,TC) :-
|
|
|
|
'$nof_threads_created'(TC).
|
|
|
|
statistics(thread_cputime,TR) :-
|
|
|
|
'$thread_runtime'(TR).
|
|
|
|
%statistics(core,[_]).
|
|
|
|
%statistics(memory,[_]).
|
|
|
|
statistics(heap,[Hp,HpF]) :-
|
|
|
|
'$statistics_heap_info'(HpM, Hp),
|
|
|
|
HpF is HpM-Hp.
|
|
|
|
statistics(program,Info) :-
|
|
|
|
statistics(heap,Info).
|
|
|
|
statistics(global_stack,[GlobInU,GlobFree]) :-
|
|
|
|
'$statistics_stacks_info'(StkSpa, GlobInU, LocInU),
|
|
|
|
GlobFree is StkSpa-GlobInU-LocInU.
|
|
|
|
statistics(local_stack,[LocInU,LocFree]) :-
|
|
|
|
'$statistics_stacks_info'(StkSpa, GlobInU, LocInU),
|
|
|
|
LocFree is StkSpa-GlobInU-LocInU.
|
|
|
|
statistics(trail,[TrlInUse,TrlFree]) :-
|
|
|
|
'$statistics_trail_info'(TrlSpa, TrlInUse),
|
|
|
|
TrlFree is TrlSpa-TrlInUse.
|
|
|
|
statistics(garbage_collection,[NOfGC,TotGCSize,TotGCTime]) :-
|
|
|
|
'$inform_gc'(NOfGC,TotGCTime,TotGCSize).
|
|
|
|
statistics(stack_shifts,[NOfHO,NOfSO,NOfTO]) :-
|
|
|
|
'$inform_heap_overflows'(NOfHO,_),
|
|
|
|
'$inform_stack_overflows'(NOfSO,_),
|
|
|
|
'$inform_trail_overflows'(NOfTO,_).
|
|
|
|
|
|
|
|
key_statistics(Key, NOfEntries, TotalSize) :-
|
|
|
|
key_statistics(Key, NOfEntries, ClSize, IndxSize),
|
|
|
|
TotalSize is ClSize+IndxSize.
|
|
|
|
|
|
|
|
|