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

小结(3)

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

根据上述9个函数,java

#根据上述数据生成图
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")

31.png从上图能够看出,随着数据量的增长,处理每一个数据所需的平均时间均呈减小趋势。先不说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))

32.png从上图能够看出,随着数据量的增长,每一个数据不一样方法的平均运算时间都在减小,但减速不一样,在数据量400<n<700时,处理每一个数据所需平均时间ddply最大,接下来是for_ifelse、str_replace和join,其他的几个函数所用时较小。另外一方面 ,尽管ddply等用时较长,但随着数据量的增多,所需时长递减速较大。spa

整体来讲,ddply>[for_ifelse,str_replace,for_switch]>[which,join]code

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

(未完!待续……)内存

相关文章
相关标签/搜索