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

小结(6)

本节把前面所有数据综合起来进行分析。1000<n<1000000。

数据格式与前面的一样。以下是作图代码。在本图中,由于数据的数量级差有些大,所以用对数坐标画图。

library(tidyverse)
library(scales)
ggplot(data[which(data$fun!="ddply_parallel"),],aes(n,mean,color=fun))+
  geom_point()+
  facet_wrap(~type,ncol=1)+
  theme(axis.text.x   = element_text(angle=90))+
  scale_x_continuous(name="length of vector", 
                     trans = log10_trans(),
                     breaks = trans_breaks("log10", function(x) 10^x),
                     labels = trans_format("log10", math_format(10^.x)))+
  scale_y_continuous(name="time (microsecond)",
                     trans = log10_trans(),
                     breaks = trans_breaks("log10", function(x) 10^x),
                     labels = trans_format("log10", math_format(10^.x)))+
  coord_flip()

在这里插入图片描述
在这里插入图片描述在这里插入图片描述从上图可以看出,对于All,Month或Season来说,这8个函数中,随着数据量的增加,ddply,join,str_replace和which处理单个数据所需时间急速下降,随着数据量的继续增加,ddply 在n=10000时有一个明显的拐点。对于for_if,for_if_else,for_ifelse和for_switch来说,随数据量的增加,处理每个数据所需时间变化相对较小,并且没有明显的拐点。因此,在处理数据量小于10000的时候,选择哪个函数区别不是很明显,但当数据量大于100000,最好选择which和join函数。另外,对于for系列函数,随数据量的增加,每个数据处理平均时间变化比较平稳。

截止目前,除了并行运算,其它函数的运行效率已基本总结完毕。

这个专题暂告一段落。有空再续……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值