如何测试Prolog程序的性能?

时间:2011-01-03 07:50:48

标签: performance testing prolog

有没有办法对几个Prolog程序进行基准测试?我正在使用SWI-Prolog,它没有显示执行查询所花费的时间!!

3 个答案:

答案 0 :(得分:8)

time/1怎么样?在SWI-Prolog中,尝试:

?- time(your_goal).

?- profile(your_goal).

答案 1 :(得分:1)

好的,发现有用的东西.. callate call_with_time_limit

meta_predicate time:call_with_time_limit(+,0).

time:call_with_time_limit(A, C) :-
        A>0, !,
        setup_call_cleanup(alarm(A, time_limit_exceeded(A), B, [install(false)]), run_alarm_goal(B, C), remove_alarm_notrace(B)).
time:call_with_time_limit(_, _) :-
        throw(time_limit_exceeded).

您可以定义查询的时间限制,在不同的查询上执行该操作并在该时间段内比较结果的数量,这不是那么有效,但这就是我到目前为止所发现的

答案 2 :(得分:1)

在GNU-Prolog中,时间谓词可以取自Prolog Compatibility Layers

参考David Reitter's GNU Prolog compatibility layer

%time
time(Goal) :-
    cpu_time(CPU),
    Goal,
    cpu_time(CPU2),
    CPUT is CPU2-CPU,
    write('time: '), write(CPUT), write('ms.\n').

time(Text, Goal) :-
    cpu_time(CPU),
    Goal,
    cpu_time(CPU2),
    CPUT is CPU2-CPU,
    write(Text), write(': '), write(CPUT), write('ms.\n').