如何在循环内找到每个调用使用的CPU时间?

时间:2015-06-16 02:48:34

标签: maxima

我正在学习Maxima,但很难找到如何在循环结构内部获取调用集成时使用的cpu时间。

问题是函数时间(%o1)给出了用于计算行%o1的CPU时间。

但是在循环内部,整个循环被视为一个操作。所以我不能用time()来计时单次呼叫。

这是一个例子

   lst:[sin(x),cos(x)];
   for i thru length(lst) do
   (
   result :  integrate( lst[i],x)
   );

我想找到用于每个调用集成的cpu时间,而不是用于整个循环的cpu时间。添加showtime: true$并没有多大帮助。我需要获取每次调用使用的CPU时间,并将值保存到变量中。

在Maxima中是否有办法找到每个调用用于集成在上述循环中的CPU时间?

使用wxMaxima 15.04.0,Windows 7。 千里马版:5.36.1 Lisp:SBCL 1.2.7

我正在寻找像Mathematica的AbsoluteTiming函数。

2 个答案:

答案 0 :(得分:3)

而不是经过实时,这在我的GCL最大值似乎返回 以秒为单位的绝对实时,尝试lisp函数

GET-INTERNAL-RUN-TIME

您可以通过

从Maxima命令行调用

获得内部的运行时();

这应该返回任何常见的lisp系统上的运行时间。在GCL, 以每秒100个为单位。

答案 1 :(得分:2)

也许您需要的功能是elapsed_real_time

编辑:你会像这样使用它:

for i ...
  do block ([t0, t1],
            t0 : elapsed_real_time (),
            integrate (...),
            t1 : elapsed_real_time (),
            time[i] : t1 - t0);