Home › フォーラム › AZ-Prologサポート掲示板 › cputime/0 動作しますか?
- このトピックには4件の返信、1人の参加者があり、最後に上間健により8年、 1ヶ月前に更新されました。
-
投稿者投稿
-
-
2016/10/25 9:49 PM #58468上間健ゲスト
次は述語マニュアルからのコピペです。
q(8) を 自分で準備できるクイーンに差し替え実行しました。
| ?-S is cputime, test, T is cputime – S.
<略>
[9,7,2,4,1,8,5,3,6]
[9,7,3,8,2,5,1,6,4]
[9,7,4,2,8,6,1,3,5]
no
| ?-S と T が最後に表示されませんでした。
q(8)のプログラムはどこでてにはいりますか?
そしてそれを実行すればS と T が表示されますか?
一般的Prologコードの実行時間はどうすれば計測できますか?よろしくお願いします。
上間【実行例】
8クィーンの全解の時間を求めます。
| ?-[-‘queen.pl’].
yes
| ?-S is cputime,q(8),T is cputime-S.
・
S = 1374824918.94200,
T = 0.473000049591064この例では8クィーンの全解が約0.47秒かかった事が分かります。
-
2016/10/26 8:36 AM #58469稲葉ゲスト
1)S と T が最後に表示されない
のは、述語test/0 がFailしているのでTopGoal全体がFailしているからです。?-S is cputime,(test;true), T is cputime – S.
とでもすればよろしいでしょう。2)q(8)のプログラムはどこでてにはいりますか?
インストールDIR/sample/other/queen.pl
にあります。3)時間計測は表示処理をコメントアウトして実処理時間だけでおこないます。
解が多量に出力されるようなプログラムではwrite/1の処理だけ計測している
ことになります。4)ほとんどのProlog処理系共通でつかえる繰り返し時間計測処理
インストールDIR/bench/harness.pl
にありますので、ご参照ください。 -
2016/10/26 1:12 PM #58470上間ゲスト
稲葉さん
ありがとうございます。稲葉さんがお示しした質問はエラーになります。
| ?-S is cputime,(test;true), T is cputime – S.
Syntax error
| ?-===========================
ここで実行しているqueens.pl をコピペします。
どこが行けないのでしょうか?〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
% 9-queens programtest :- queen([1,2,3,4,5,6,7,8,9],X),write(X),nl,fail.
queen(Data, Out) :-
queen_2(Data, [], Out).queen_2([], _, []).
queen_2([H|T], History, [Q|M]) :-
qdelete(Q, H, T, L1),
nodiag(History, Q, 1),
queen_2(L1, [Q|History], M).qperm([], []).
qperm([X|Y], [U|V]) :-
qdelete(U, X, Y, Z),
qperm(Z, V).qdelete(A, A, L, L).
qdelete(X, A, [H|T], [A|R]) :-
qdelete(X, H, T, R).safe([]).
safe([N|L]) :-
nodiag(L, N, 1),
safe(L).nodiag([], _, _).
nodiag([N|L], B, D) :-
D =\= N – B,
D =\= B – N,
D1 is D + 1,
nodiag(L, B, D1).
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 -
2016/10/26 1:28 PM #58471稲葉輝ゲスト
| ?-S is cputime,(test;true), T is cputime – S.
の最後の”-”が字化しています。
コピペせずに手打ちしてください。 -
2016/10/26 3:45 PM #58472上間健ゲスト
稲葉さん
ありがとうございました。
実行できました。
〜〜〜〜〜〜〜〜
実行画面
〜〜〜〜〜〜〜〜
AZ-Prolog Version 9.53 (Linux/x64)
Copyright (C) SOFNEC CO., LTD. 1987-2016/09/11
| ?-S is cputime, ( test ; true ) , T is cputime – S.
<省略>
[9,7,2,4,1,8,5,3,6]
[9,7,3,8,2,5,1,6,4]
[9,7,4,2,8,6,1,3,5]
S = 1477464343.71518,
T = 0.123245000839233
yes
| ?-
〜〜〜〜〜〜〜〜
-
-
投稿者投稿
- フォーラム「AZ-Prologサポート掲示板」には新規投稿および返信を追加できません。