Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在prolog中计算时间的算法_Prolog_Swi Prolog_Systemtime - Fatal编程技术网

在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解决桥牌和火炬的难题。当我尝试不同的搜索方法时,我需要找到计算时间。我指的是算法求解问题的开始时间和结束时间


我可以从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中添加额外的计时器代码!伟大的我明白了。:-)非常感谢。