如何测量 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 秒。
考虑到方法完成太快,我决定使用统计信息(运行时,...)来测量两次运行时调用之间所花费的时间。例如,我可以测量完成 20 次方法调用所需的时间,并将测量的时间 T 除以 20。
唯一的问题是,对于 20 次调用,T 等于 0、16、32 或 48 毫秒。显然,它分别测量每个方法调用的时间并找到执行时间的总和(通常只有 0.0 秒)。这超出了测量 N 个方法调用的运行时间并将时间 T 除以 N 的全部目的。
简而言之:我用于执行时间测量的当前方法是不够的。有没有办法让它更精确(例如 9 位小数)?