2011-01-03 12 views

答えて

8

time/1についてはどうですか? SWI-Prologで、試してみてください。GNU-Prologの時間述語で

?- time(your_goal). 

?- profile(your_goal). 
1

okが、あなたはそれは、クエリの時間制限を定義する別のクエリにそれを実行し、その時間内に戻って結果の数を比較することができます。.. 述語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). 

を有益な何かを見つけましたそれほど効率的ではありませんが、私がこれまでに見つけたものは

1

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'). 
関連する問題