小結(jié)(6)
本節(jié)把前面所有數(shù)據(jù)綜合起來進(jìn)行分析峭弟。1000<n<1000000附鸽。
數(shù)據(jù)格式與前面的一樣。以下是作圖代碼瞒瘸。在本圖中坷备,由于數(shù)據(jù)的數(shù)量級差有些大,所以用對數(shù)坐標(biāo)畫圖情臭。
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個(gè)函數(shù)中俯在,隨著數(shù)據(jù)量的增加竟秫,ddply,join,str_replace和which處理單個(gè)數(shù)據(jù)所需時(shí)間急速下降,隨著數(shù)據(jù)量的繼續(xù)增加跷乐,ddply 在n=10000時(shí)有一個(gè)明顯的拐點(diǎn)肥败。對于for_if,for_if_else,for_ifelse和for_switch來說,隨數(shù)據(jù)量的增加愕提,處理每個(gè)數(shù)據(jù)所需時(shí)間變化相對較小馒稍,并且沒有明顯的拐點(diǎn)。因此浅侨,在處理數(shù)據(jù)量小于10000的時(shí)候纽谒,選擇哪個(gè)函數(shù)區(qū)別不是很明顯,但當(dāng)數(shù)據(jù)量大于100000,最好選擇which和join函數(shù)如输。另外鼓黔,對于for系列函數(shù),隨數(shù)據(jù)量的增加挨决,每個(gè)數(shù)據(jù)處理平均時(shí)間變化比較平穩(wěn)请祖。
截止目前,除了并行運(yùn)算脖祈,其它函數(shù)的運(yùn)行效率已基本總結(jié)完畢肆捕。
這個(gè)專題暫告一段落。有空再續(xù)……