Prolog:来自时间/ 1的结果实际意味着什么?

我是Prolog的新手(对CS /编程来说还是新手),我正在尝试使用time / 1谓词来评估和改进程序的性能.但是,我不确定我理解输出.例如,除了“MyProgram”的解决方案之外,查询时间(“MyProgram”)产生以下结果:

%34,865,980推断,4.479 CPU,4.549秒(98%CPU,7784905 Lips)

这是什么意思?有一些解释here,但我发现它还不够.

提前致谢!

最佳答案 含义为
follows.基本数据通过以下调用进行采样:

  get_time(Wall)
  statistics(cputime, Time)
  statistics(inferences, Inferences)

然后显示的是:

‘%1 inferences, %2 CPU in %3 seconds (%4% CPU, %5 Lips)’
%1: Inferences2-Inferences1
%2: Time2-Time1
%3: Wall2-Wall1
%4: round(100*%2/%3)
%5: integer(%1/%2)

在单线程应用程序而没有其他应用程序中,我们仍然有%2 =< %3如果有单独的GC线程,则后面的%4将是低于或等于100的百分比.如果您的应用程序没有执行I / O,并且您的百分比非常低,则可能在某处存在锁定问题.

点赞