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

小結(jié)(2)

以上用到了9個方法實現(xiàn)一個問題碧绞,在實現(xiàn)的過程中試驗數(shù)據(jù)量為n=10玉吁。得到不同方法所用的平均耗時間大小。每種方法在計算平均耗時的重復(fù)次數(shù)為N =100排霉。當(dāng)然上述的每個方法測試的數(shù)據(jù)量盡管相同偏竟,但由于(1)數(shù)據(jù)內(nèi)容不盡相同煮落,(2)由于測試耗時的時候后臺打開的程序多少不同(CPU和內(nèi)存任務(wù)量不同),(3)每種方法所處理的內(nèi)容不盡相同踊谋。這些都對所測試的結(jié)果產(chǎn)生影響蝉仇。為此,為了減小這些影響殖蚕,本節(jié)主要通過增加數(shù)據(jù)量大薪蜗巍(n)(也可以增加重復(fù)次數(shù)(N ),本例沒加以討論)來估測每種方法的優(yōu)劣睦疫。另外害驹,為了具有可比性,以下統(tǒng)計結(jié)果均為處理單個數(shù)據(jù)所消耗的時間蛤育。時間單位為微秒(microsecond)

自定義函數(shù)(1)

計算這9個函數(shù)處理n個數(shù)據(jù)分別所用的平均時間(N為重復(fù)次數(shù))

#n為隨機化月份數(shù)據(jù)向量的長度宛官,N為計算每個函數(shù)平均重復(fù)的次數(shù)
methods_time<-function(n,N){
  month<-month_digital(n)
  Month_for_if         <-microbenchmark(Month_name_for_if         (month),times=N,unit="us")#milliseconds
  Month_for_if_else    <-microbenchmark(Month_name_for_if_else    (month),times=N,unit="us")
  Month_for_ifelse     <-microbenchmark(Month_name_for_ifelse     (month),times=N,unit="us")
  Month_for_switch     <-microbenchmark(Month_name_for_switch     (month),times=N,unit="us")
  Month_which          <-microbenchmark(Month_name_which          (month),times=N,unit="us")
  Month_join           <-microbenchmark(Month_name_join           (month),times=N,unit="us")
  Month_ddply          <-microbenchmark(Month_name_ddply          (month),times=N,unit="us")
  Month_str_replace_all<-microbenchmark(Month_name_str_replace_all(month),times=N,unit="us")
  
  Season_for_if         <-microbenchmark(Season_name_for_if         (month),times=N,unit="us")
  Season_for_if_else    <-microbenchmark(Season_name_for_if_else    (month),times=N,unit="us")
  Season_for_ifelse     <-microbenchmark(Season_name_for_ifelse     (month),times=N,unit="us")
  Season_for_switch     <-microbenchmark(Season_name_for_switch     (month),times=N,unit="us")
  Season_which          <-microbenchmark(Season_name_which          (month),times=N,unit="us")
  Season_join           <-microbenchmark(Season_name_join           (month),times=N,unit="us")
  Season_ddply          <-microbenchmark(Season_name_ddply          (month),times=N,unit="us")
  Season_str_replace_all<-microbenchmark(Season_name_str_replace_all(month),times=N,unit="us")
  
  result_for_if         <-microbenchmark(result_for_if         (month),times=N,unit="us")
  result_for_if_else    <-microbenchmark(result_for_if_else    (month),times=N,unit="us")
  result_for_ifelse     <-microbenchmark(result_for_ifelse     (month),times=N,unit="us")
  result_for_switch     <-microbenchmark(result_for_switch     (month),times=N,unit="us")
  result_which          <-microbenchmark(result_which          (month),times=N,unit="us")
  result_join           <-microbenchmark(result_join           (month),times=N,unit="us")
  result_ddply          <-microbenchmark(result_ddply          (month),times=N,unit="us")
  result_str_replace_all<-microbenchmark(result_str_replace_all(month),times=N,unit="us")
  
  Month<-c(summary(Month_for_if)$mean,
           summary(Month_for_if_else)$mean,
           summary(Month_for_ifelse)$mean,
           summary(Month_for_switch)$mean,
           summary(Month_which)$mean,
           summary(Month_join)$mean,
           summary(Month_ddply)$mean,
           summary(Month_str_replace_all)$mean)
  Season<-c(summary(Season_for_if)$mean,
            summary(Season_for_if_else)$mean,
            summary(Season_for_ifelse)$mean,
            summary(Season_for_switch)$mean,
            summary(Season_which)$mean,
            summary(Season_join)$mean,
            summary(Season_ddply)$mean,
            summary(Season_str_replace_all)$mean)
  All<-c(summary(result_for_if)$mean,
         summary(result_for_if_else)$mean,
         summary(result_for_ifelse)$mean,
         summary(result_for_switch)$mean,
         summary(result_which)$mean,
         summary(result_join)$mean,
         summary(result_ddply)$mean,
         summary(result_str_replace_all)$mean)
  df<-data.frame(Month/n,Season/n,All/n)
  colnames(df)<-c("Month","Season","All")
  df$Type<-c("for_if","for_if_else","for_ifelse","for_switch","which","join","ddply","result_str_replace")
  df$n<-n
  df$N<-N
  return(select(df,Type,n,N,everything()))
}

自定義函數(shù)(2)

調(diào)用上述函數(shù),處理月份數(shù)據(jù)為100瓦糕,200底洗,300,……刻坊,1000時枷恕,所需要的平均時間

result<-data.frame(Type=as.character(),n=as.integer(),N=as.integer(),
                    Month=as.integer(),Season=as.integer(),All=as.integer())
foreach (i= seq(100,1000,100)) %dopar% {
  tmp<-methods_time(i,100)
  result<-rbind(result,tmp)
  cat(paste0(i,"\n"))
}
write.csv(tmp,"/home/xh/300G/tmp/result.csv")

(未完党晋!待續(xù)……)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谭胚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子未玻,更是在濱河造成了極大的恐慌灾而,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扳剿,死亡現(xiàn)場離奇詭異旁趟,居然都是意外死亡,警方通過查閱死者的電腦和手機庇绽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門锡搜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來橙困,“玉大人,你說我怎么就攤上這事耕餐》哺担” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵肠缔,是天一觀的道長夏跷。 經(jīng)常有香客問我,道長明未,這世上最難降的妖魔是什么槽华? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮趟妥,結(jié)果婚禮上猫态,老公的妹妹穿的比我還像新娘。我一直安慰自己披摄,他們只是感情好懂鸵,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著行疏,像睡著了一般匆光。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酿联,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天终息,我揣著相機與錄音,去河邊找鬼贞让。 笑死周崭,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喳张。 我是一名探鬼主播续镇,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼销部!你這毒婦竟也來了摸航?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤舅桩,失蹤者是張志新(化名)和其女友劉穎酱虎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體擂涛,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡读串,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恢暖。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡排监,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杰捂,到底是詐尸還是另有隱情社露,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布琼娘,位于F島的核電站峭弟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏脱拼。R本人自食惡果不足惜瞒瘸,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望熄浓。 院中可真熱鬧情臭,春花似錦、人聲如沸赌蔑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娃惯。三九已至跷乐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間趾浅,已是汗流浹背愕提。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留皿哨,地道東北人浅侨。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像证膨,于是被迫代替她去往敵國和親如输。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348