5

我正在尝试mclapply使用. 该函数通过计算对数似然距离将值分配给序列矩阵 - 一个 CPU 密集型操作。parallelR

结果system.time值令人困惑:

> system.time(mclapply(worksample,function(x){p_seqi_modj(x,worksample[[1]],c(1:17))}))
   user  system elapsed 
 29.339   1.242  18.581 

我认为这elapsed意味着聚合时间(user+ system)。在这种情况下,上述结果意味着什么?我应该定位到什么时间?我无与伦比的版本userelapsed.

4

1 回答 1

3

帮助页面?system.time说函数返回的值是类 proc_time 的对象,我们应该查阅?proc.time. 在那里我们了解到用户时间是

cumulative sum of user and system times of any child processes

所以你的任务在每个核心上花费了大约 15 秒(mclapply默认使用 2 个核心,请参阅mc.cores参数)。

实际上,我们在前面的帮助页面中看到proc.time()返回五个元素将进程和子时间分开,并且打印中使用的汇总方法将用户和系统时间折叠为进程+子时间,因此有更多信息可用。

于 2013-09-06T12:49:04.730 回答