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")
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等用时较长,但随着数据量的增多,所需时长递减速较大。

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

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

(未完!待续……)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,612评论 5 471
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,345评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,625评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,022评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,974评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,227评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,688评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,358评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,490评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,402评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,446评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,721评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,802评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,013评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,504评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,080评论 2 341

推荐阅读更多精彩内容

  • 小结(2) 以上用到了9个方法实现一个问题,在实现的过程中试验数据量为n=10。得到不同方法所用的平均耗时间大小。...
    灭绝老衲阅读 235评论 0 1
  • --- layout: post title: "如果有人问你关系型数据库的原理,叫他看这篇文章(转)" date...
    蓝坠星阅读 772评论 0 3
  • 这是我原创文章第67天。一个终生知识使用者、践行者。 《西游记》这部经典的四大名著之一,电视剧被放了几十年了,年年...
    夏阳777阅读 485评论 0 1
  • 无助时风筝带来了温暖, 无意中却扯断了它的线。 昔日里熟悉的温暖, 却只待来了今日的渐行渐远。 感谢你无心给予的温...
    庭院故人阅读 875评论 0 3
  • 1 介绍 分组返回数据,不是where的那种返回特定数据 2 创建分组(group by) 2.1 分析 按ven...
    布尔bl阅读 402评论 0 1