gpt4 book ai didi

prolog - 显示谓词子句每个目标的执行时间

转载 作者:行者123 更新时间:2023-12-03 15:11:00 25 4
gpt4 key购买 nike

我想用 查看谓词目标内的执行时间SICStus 序言 .

示例:

pred :-
goal1,
time,
goal2,
time.

go :-
call(pred).

time_go :-
go,
times(go).

预期结果:
?- time_go.
times_go = 1000ms ,
times_go_goal1 = 500ms,
times_go_goal2 = 500ms

怎么做 ?

我试过 time_out(:Goal, +Time, -Result)来自 library(timeout)但我收到了这个错误:
| ?- time_out(char_code(a,N), T, Res).
! Instantiation error in argument 2 of user:time_out/3
! goal: time_out(user:char_code(a,_193),_179,_181)

| ?- time_out(char_code(a,N), 1000, Res).
N = 97,
Res = success ? ; % Res=timeout in other example

最佳答案

您可以使用 statistics/2为了那个原因:

statistics(runtime,[Start|_]),
do_something,
statistics(runtime,[Stop|_]),
Runtime is Stop - Start.

或者,您可以使用 total_runtime而不是 runtime如果你想包括垃圾收集的时间。 StartStop以毫秒为单位,但上次我将它与 SICStus 一起使用时,它仅返回 10 的倍数。在一个项目中,我们使用对自定义外部 C 库的调用来检索更精细的分辨率。

备注 time_out/3 :用于限制目标的运行时间,而不是衡量其运行时间。如果目标及时完成,结果为 success , 如果需要更多时间,则中止执行(内部抛出超时异常),结果为 timeout .

关于prolog - 显示谓词子句每个目标的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34970061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com