1. R语言运行效率分析_小结(3)

小结(3)

以上用到了9个方法实现一个问题,在实现的过程中试验数据量为n=10。得到不同方法所用的平均耗时间大小。每种方法在计算平均耗时的重复次数为N =100。当然上述的每个方法测试的数据量尽管相同,但由于(1)数据内容不尽相同,(2)由于测试耗时的时候后台打开的程序多少不同(CPU和内存任务量不同),(3)每种方法所处理的内容不尽相同。这些都对所测试的结果产生影响。为此,为了减小这些影响,本节主要通过增加数据量大小(n)(也可以增加重复次数(N ),本例没加以讨论)来估测每种方法的优劣。另外,为了具有可比性,以下统计结果均为处理单个数据所消耗的时间。时间单位为微秒(microsecond)

根据上述9个函数,

#根据上述数据生成图
library(tidyverse)
data<-read.csv("/home/xh/300G/笔记/R/10~1000.csv")
data<-gather(data,type,mean,-c("fun","n","N"))
head(data)
         fun  n   N  type       mean
1      for_if 10 100 Month   1.167005
2 for_if_else 10 100 Month   0.918378
3  for_ifelse 10 100 Month  16.727339
4  for_switch 10 100 Month   1.713591
5       which 10 100 Month   5.705561
6        join 10 100 Month 183.532495
ggplot(data,aes(n,mean,color=fun))+
  geom_point()+
  facet_wrap(~type)+
  theme(axis.text.x   = element_text(angle=90))+
  scale_x_continuous(name="length of vector")+
  scale_y_continuous(name="time")

在这里插入图片描述从上图可以看出,随着数据量的增加,处理每个数据所需的平均时间均呈减少趋势。先不说ddply的并行运算,其它8个函数均在数据量小于250的时候,随着数据量的增加,处理每个数据平均时间急速减少;当数据量大于250时,随着数据量的增加,处理每个数据平均时间减少趋势逐渐放缓。

我们进一步分析数据量大于250的情形:

ggplot(data[which(data$fun!="ddply_parallel"),],aes(n,mean,color=fun))+
  geom_point()+
  facet_wrap(~type)+
  theme(axis.text.x   = element_text(angle=90))+
  scale_x_continuous(name="length of vector",limits=c(250,1000))+
  scale_y_continuous(name="time",limits=c(0,80))

在这里插入图片描述从上图可以看出,随着数据量的增加,每个数据不同方法的平均运算时间都在减少,但减速不同,在数据量400<n<700时,处理每个数据所需平均时间ddply最大,接下来是for_ifelse、str_replace和join,其余的几个函数所用时较小。另一方面 ,尽管ddply等用时较长,但随着数据量的增多,所需时长递减速较大。

总体来说,ddply>[for_ifelse,str_replace,for_switch]>[which,join]。

为此,我们下一节主要讨论当数据量足够大时,这几个函数处理数据的平均 时长是何种规律。

(未完!待续……)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值