作者kenshin528 (成立奥凶帝国!!)
看板R_Language
标题[心得] sqldf效率问题
时间Thu Jul 24 13:30:54 2014
[关键字]: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