我正在解决PROLOG的Bridge and Torch拼图。当我尝试不同的搜索方法时,我需要找到计算时间。我的意思是算法解决问题的开始时间和结束时间。
我可以从Prolog访问系统时间吗?怎么样?
答案 0 :(得分:1)
我使用get_time(T)
计算谓词中的总时间:
print_solution :-
**get_time(T1),**
init(State),
solve(State,Solution,EndState),
writeln('Start state:'),
writeln(State),
writeln('Solution:'),
writeln(Solution),
writeln('Final state:'),
writeln(EndState),
**get_time(T2),**
**DeltaT is T2- T1,**
**write('time: '), write(DeltaT), write(' ms.\n'), nl.**
答案 1 :(得分:1)
使用get_time/1
来评估算法的执行时间不会孤立地计算算法的执行时间,而是计算整个计算机的进程堆栈的执行时间。例如,如果您的操作系统决定在后台运行某个过程,这可能已经大大改变了时间差。
SWI-Prolog专门支持跟踪计算所有谓词谓词的时间。为此,您需要(1)导入库statistics
和(2)将要在profile/1
中分析的谓词括起来。
例如:
:- use_module(library(statistics)).
run_test:-
profile(my_predicate(MyArgument)).
希望这有帮助!