R: 如何让 system.time 打印被计时的表达式?

标签 r timing

我有一个R的大群函数相互调用,它们可能需要很多时间,你我使用 system.time 调用它们:

f1 <- function () {
  print(system.time(f1.1()))
  print(system.time(f1.2()))
  print(system.time(f1.3()))
}
...
f <- function () {
  print(system.time(f1()))
  print(system.time(f2()))
  print(system.time(f3()))
}

然后是 f() 的输出好像
             user            system           elapsed 
129.599 (2.16min)  0.663 (663.00ms) 130.438 (2.17min) 
    wrote 447,337,021 bytes
              user             system            elapsed 
2746.37 (45.77min)  145.299 (2.42min) 2896.68 (48.28min) 
            user           system          elapsed 
 9.544 (9.54sec) 0.755 (755.00ms)  10.3 (10.30sec) 

并且需要一些时间来弄清楚功能和时间之间的对应关系。

我试过这个功能:
verbose <- function (expr) {
  ret <- system.time(expr)
  cat("<<<<<<")
  print(expr)
  print(ret)
}
> verbose(Sys.sleep(2))
<<<<<<NULL
           user          system         elapsed 
     0 (0.00ms)      0 (0.00ms) 2.002 (2.00sec) 

唉,它打印 NULL而不是 Sys.sleep(2) (即,值而不是表达式)。

那么,我该如何保存 exprverbose 中的打印表示为了 future 的输出?

最佳答案

您的职能 verbose可以,通过添加 substitute , 打印您传递给参数 expr 的值.

换线 print(expr)

print(substitute(expr))

然后
> verbose(Sys.sleep(2))
<<<<<<Sys.sleep(2)
   user  system elapsed 
  0.023   0.007   2.009 

关于R: 如何让 system.time 打印被计时的表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17515193/

相关文章:

R:查找数据框中列列表的最大值/最小值

regex - R:需要用正则表达式替换不可见/重音字符

php - 您如何运行一个长的 PHP 脚本并通过 HTTP 不断向浏览器发送更新?

Javascript 按键时间

ruby-on-rails - 我怎样才能弄清楚为什么我的 JRuby Rails 应用程序需要很长时间才能提供页面?

r - 在flexdashboard中的菜单内创建菜单 - R

有条件地重复字符串的某些部分

r - ggplot2 facet - 突出显示匹配的列

scons - 如何测量 scons 构建的每个组件的构建时间?

jquery 淡出时间