[心得] sqldf效率問題
[關鍵字]:sqldf tapply
[重點摘要]:
剛開始學R的時候對於R的指令很不熟,所以大部分都習慣用sqldf來寫查詢指令
但是隨著對R的熟悉,最近也在嘗試用R內建的fnction來查詢資料
所以才想說來比較一下兩者的效能差異
實驗的DATA很簡單(大至長這樣,實驗方法就是增加row的數量)
Category FREQ
T 0.2
T 0.3
T 0.4
F 0.5
F 0.6
F 0.7
目的是依照category來sum FREQ
原始碼
#產生DATASET
x <- data.frame(Freq=runif(1000000,0,1),Category=c("T","F"))
##測試SQL
ptm_sql <- proc.time()
result<-sqldf("SELECT Category, sum(Freq)
FROM x
GROUP BY Category
")
ptm_sql <- proc.time() - ptm_sql
ptm_sql
##測試tapply
ptm_tapply <- proc.time()
result<-tapply(x$Freq, x$Category, FUN=sum)
ptm_tapply <- proc.time() - ptm_tapply
ptm_tapply
測試結果:
當rows = 10,000時
user system elapsed
SQLDF 0.05 0.00 0.94
TAPPLY 0.00 0.00 0.34
--------------------------------
rows = 1,000,000:
user system elapsed
SQLDF 2.30 0.03 4.34
TAPPLY 0.32 0.00 0.40
--------------------------------
row = 100,000,000:
user system elapsed
SQLDF 288.77 31.00 505.11
TAPPLY 31.65 1.84 39.66
沒做實驗前還不知道,SQLDF的效能和TAPPLY有那麼大的差異
不過這個實驗沒有考量到多個表格join的狀況就是了
實驗環境:
CPU intel i5 4200
RAM 8G
--
(C)lass 【 分組討論區 】
11 卡漫夢工廠 卡通, 漫畫, 動畫 [Ckmike]
4 C_J_Artist 作家 Σ日本漫畫家專區 [Ckmike]
10 TakahasiShin 作家 ◎****高橋真作品討論版**** kenshin528
http://bryannotes.blogspot.tw/ 行銷研究與資料分析筆記
※ 編輯: kenshin528 (42.71.64.120), 07/24/2014 13:31:15
※ 編輯: kenshin528 (42.71.64.120), 07/24/2014 13:32:03
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章