Как проверить работоспособность программы Prolog? - PullRequest
3 голосов
/ 03 января 2011

Есть ли способ сделать несколько тестов для нескольких программ Prolog? Я использую SWI-Prolog, и он не показывает время, затраченное на выполнение запроса !!

Ответы [ 3 ]

8 голосов
/ 03 января 2011

А как насчет time/1?В SWI-Prolog попробуйте:

?- time(your_goal).

и

?- profile(your_goal).
1 голос
/ 28 августа 2011

В GNU-Prolog предикат времени может быть взят из Уровни совместимости Prolog .

Ссылаясь на Уровень совместимости Дэвида Рейтера с GNU Prolog :

%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').
1 голос
/ 03 января 2011

хорошо, нашел что-то полезное .. Предикат 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).

Вы можете определить ограничение времени для запроса, выполнить его для разных запросов и сравнить количество результатов назад за тот период времени, этоне так эффективно, но это то, что я нашел до сих пор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...