ECLiPSe CLP でメソッドの実行時間を測定するにはどうすればよいですか? 現在、私はこれを持っています:
measure_traditional(Difficulty,Selection,Choice):-
statistics(runtime, _),
time(solve_traditional(Difficulty,Selection,Choice,_)),
time(solve_traditional(Difficulty,Selection,Choice,_)),
time(solve_traditional(Difficulty,Selection,Choice,_)),
time(solve_traditional(Difficulty,Selection,Choice,_)),
time(solve_traditional(Difficulty,Selection,Choice,_)),
time(solve_traditional(Difficulty,Selection,Choice,_)),
time(solve_traditional(Difficulty,Selection,Choice,_)),
time(solve_traditional(Difficulty,Selection,Choice,_)),
statistics(runtime,[_|T]), % T
write(T).
メソッドsolve_traditional(...)の実行にかかった時間を書き込んで、テキスト ファイルに書き出す必要があります。しかし、それは十分に正確ではありません。指定されたメソッドの時間が 0.015 または 0.016 秒と表示されることもありますが、通常は 0.0 秒と表示されます。
メソッドの完了が速すぎると判断したため、2 つのランタイム呼び出しの間にかかる時間を測定するために統計 (ランタイムなど)を使用することにしました。次に、たとえば、20 回のメソッド呼び出しを完了するのにかかる時間を測定し、測定した時間 T を 20 で割ることができます。
唯一の問題は、20 回の呼び出しで T が 0、16、32、または 48 ミリ秒のいずれかに等しいことです。どうやら、各メソッド呼び出しの時間を個別に測定し、実行時間の合計を見つけます (多くの場合、わずか 0.0 秒です)。これは、N 個のメソッド呼び出しの実行時間を測定し、時間 T を N で割るという目的全体を打ち負かします。
要するに、私が実行時間の測定に使用している現在の方法は不十分です。より正確にする方法はありますか (たとえば、小数点以下 9 桁)。