我正在通过 PROLOG 解决桥梁和火炬难题。当我尝试不同的搜索方法时,我需要找到计算时间。我的意思是算法解决问题的开始时间和结束时间。
我可以从 Prolog 访问系统时间吗?如何?
我正在通过 PROLOG 解决桥梁和火炬难题。当我尝试不同的搜索方法时,我需要找到计算时间。我的意思是算法解决问题的开始时间和结束时间。
我可以从 Prolog 访问系统时间吗?如何?
我计算了谓词中的总时间,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.**
用于get_time/1
评估算法的执行时间并不是单独计算算法的执行时间,而是计算整个计算机的进程堆栈的执行时间。例如,如果您的操作系统决定在后台运行某个进程,这已经可以显着改变时间增量。
SWI-Prolog 专门支持跟踪计算所有调用谓词所花费的时间。为此,您需要 (1) 导入库statistics
和 (2) 将要分析的谓词括在profile/1
.
例如:
:- use_module(library(statistics)).
run_test:-
profile(my_predicate(MyArgument)).
希望这可以帮助!