在prolog中计算时间的算法
我正在用PROLOG解决桥牌和火炬的难题。当我尝试不同的搜索方法时,我需要找到计算时间。我指的是算法求解问题的开始时间和结束时间在prolog中计算时间的算法,prolog,swi-prolog,systemtime,Prolog,Swi Prolog,Systemtime,我正在用PROLOG解决桥牌和火炬的难题。当我尝试不同的搜索方法时,我需要找到计算时间。我指的是算法求解问题的开始时间和结束时间 我可以从Prolog访问系统时间吗?如何计算?我使用get\u Time(T)计算谓词中的总时间,如下所示: print_solution :- **get_time(T1),** init(State), solve(State,Solution,EndState), writeln('Start state:'), writeln(Sta
我可以从Prolog访问系统时间吗?如何计算?我使用
get\u 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)导入库统计信息,(2)在profile/1
中包含要分析的谓词
例如:
:- use_module(library(statistics)).
run_test:-
profile(my_predicate(MyArgument)).
希望这有帮助 你看过SWI Prolog的time/1
谓词了吗?谢谢我使用了get\u time(T)
并解决了它。相比之下,删除**
项并调用time(print\u solution)
看看你得到了什么,这可能会很有趣。它将显示时间以及其他配置文件信息,如推断数等。这样,您就可以避免在predicate.WAW中添加额外的计时器代码!伟大的我明白了。:-)非常感谢。