用性能分析工具找到程序效率的瓶颈

R的性能分析工具可以按较高频率(如每隔几毫秒)抽查正在被调用的函数, 因为函数可以嵌套调用, 所以会记录下来正在嵌套调用的各个函数。 因为抽查的速度很快, 所以会得到大量的被调用函数的抽样数据, 这样就可以进行概括, 得知哪些函数被调用最频繁, 调用的途径是怎样的。 基本R的utils::Rprof()可以收集程序运行的性能分析用数据, 而utils::summaryRprof()则可以用文本格式提供性能分析的概括。

在RStudio软件中, 借助于profvis扩展包, 我们可以从Profile菜单对选定行进行性能分析。 但是, 对比较复杂的程序, 应该将要分析的程序保存为一个R源文件, 并用source()的方法将要运行的函数载入, 并用profvis()函数调用该函数并显示运行后性能分析结果。

例18.6 以18.4的程序为例。 我们将第一个程序包装为一个函数bad_copy()并存入文件bad_copy.R中, 然后用profvis进行性能分析。

bad_copy.R文件内容为:

bad_copy <- function(){
  M <- 1E5
  x <- c()
  for(i in seq(M)){
    x <- c(x, diff(range(runif(10))))
  }
  mean(x)
}

安装好profvis扩展包后,运行如下的性能分析程序:

library(profvis)
profvis(bad_copy())

结果在RStudio中将显示如下的两个窗格内容:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值