1. R語言運行效率分析_小結(6)

小結(6)

本節把前面全部數據綜合起來進行分析。1000<n<1000000。java

數據格式與前面的同樣。如下是做圖代碼。在本圖中,因爲數據的數量級差有些大,因此用對數座標畫圖。函數

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系列函數,隨數據量的增長,每一個數據處理平均時間變化比較平穩。spa

截止目前,除了並行運算,其它函數的運行效率已基本總結完畢。3d

這個專題暫告一段落。有空再續……code

相關文章
相關標籤/搜索