首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何分析特定函数在R中运行的时间长度

如何分析特定函数在R中运行的时间长度
EN

Stack Overflow用户
提问于 2012-12-05 02:33:35
回答 3查看 149关注 0票数 1

我刚刚得到了一份工作,通过提高用于计算数据的算法的效率来帮助加速R中的程序。有许多执行不同计算的循环,我想知道哪些循环最终使用了最多的资源。我想知道如何计算一个循环完全结束所需的时间。我可以使用这些信息来确定要优化哪些算法,甚至可以编写一个处理计算的C扩展。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-05 02:39:12

您可以使用:

  • Sys.time() or system.time()
  • The rbenchmark package
  • microbenchmark package
  • 或探查器(如?RProf)
票数 2
EN

Stack Overflow用户

发布于 2012-12-05 06:44:21

我用Rprof告诉你去哪里找。它生成一个堆栈样本文件,我只查看其中的一小部分,比如随机选择的10个。或者我只是让样本之间的时间足够大,这样一开始我就不会得到太多的样本。

这有两个原因。

1)通过实际检查单个堆栈样本,您可以亲眼看到简单的统计数据无法揭示的问题,因为通过查看堆栈,您可以看到正在进行操作的原因。这告诉你是否可以摆脱它,这是最基本的信息。

2)如果你看到这样一种你可以改进的活动模式,你只需在多个样本上看到它,就知道它值得修复。所有额外的样本,如果它们意味着你不能做(1),实际上是有害的。

票数 2
EN

Stack Overflow用户

发布于 2012-12-05 02:41:39

这是一个使用another SO questions的基准测试的例子,它使用tapplybydata.table进行了比较:

代码语言:javascript
复制
library(rbenchmark)  

           # Different tests being compared
benchmark( using.tapply = tapply(x[, 1], x[, "f"], mean),
           using.by = by(x[, 1], x[, "f"], mean), 
           using.dtable = dt[,mean(col1),by=key(dt)]), 

           # Number of reps. How results are.
           replications = 250, order = "relative"
          )   

#------------------------#
#         RESULTS        # 
#------------------------#


#   COMPARING data.table VS tapply VS by   #
#------------------------------------------#
#             test elapsed relative
#   2  using.dtable   0.168    1.000
#   1  using.tapply   2.396   14.262
#   3      using.by   8.566   50.988
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13709583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档