从Stata12到14,每个大版本升级都带来了许多新功能,比如13的长字符,比如14的Unicode和Bayesian等等。功能的增强是否伴随运行速度的提升呢?出于好奇心,进行速度测试。
测试环境为:iMac(Late 2012), CPU i7, 内存32G,OSX Yosemite 10.10.3,Stata 12/13/14均更新至最新小版本。手头的Stata 12/13/14均为MP版本,分别支持4核、8核、16核。为保证测试环境统一,均设置使用4核进行运算。
测试中执行如下程序: 设置60,000,000观察值,随机生成16个连续变量,一个dummy,运行logistic回归。
测试用代码如下:
set processor 4
timer on 1
set obs 60000000
forvalue i=1/16 {
gen x`i'=rnormal()
}
gen y=round(rnormal())
timer off 1
timer on 2
logistic y x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16
timer off 2
timer list
进行三轮速度测试,第一轮测试顺序为Stata 12/13/14,第二轮测试顺序为Stata 13/14/12,第三轮测试顺序为Stata 14/12/13。
Stata 12在三轮测试中用时分别为:
Timer 1(变量生成) / Timer2 (回归分析):
70.01s/91.49s
69.28s/89.88s
69.37s/90.98s
Stata 13在三轮测试中用时分别为:
Timer 1(变量生成) / Timer2 (回归分析):
71.05s/98.92s
71.84s/98.19s
71.15s/96.57s
Stata 14在三轮测试中用时分别为:
Timer 1(变量生成) / Timer2 (回归分析):
74.85s/114.67s
75.15s/111.30s
74.94s/113.60s
很明显,无论变量生成还是回归分析,Stata12用时最短,Stata14用时最长。换句话说,在速度方面,Stata12快于Stata13快于Stata14.
以上测试中,17个变量,6000万观察值,内存占用将近5G,最慢的Stata14变量生成加回归分析耗时也就是190s,速度很快了。
SAS没有MAC版本,本人目前无法对比测试。感兴趣的朋友可以试试看在计算机配置相同的情况下究竟哪个软件快(当然,要注意Stata的内存限制)。个人根据以往经验,感觉Stata更快。到底哪个快,还得拿数据说话。