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

how to find CPU time used by each call when inside a loop?

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

问题是函数 time(%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,windows7。 千里马版本:5.36.1 口齿不清:SBCL 1.2.7

我一直在寻找类似 Mathematica 的 AbsoluteTiming 函数的东西。

也许您需要的功能是elapsed_real_time.

编辑:您可以这样使用它:

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

而不是经过的实时时间,在我的 GCL maxima 上似乎 return 以秒为单位的绝对实时,试试 lisp 函数

GET-内部-运行-TIME

您可以通过

从 Maxima 命令行调用

?get-internal-运行-time();

这应该 return 运行 在任何常见的 lisp 系统上。在协鑫, 以每秒 100 个为单位。