查看原文
其他

速度大比拼之Stata17有多快?

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:李婷婷,河南大学经济学院

本文编辑:刘子艳

技术总编:戴   雯

Stata&Python云端课程来啦!

好雨知时节,当春乃发生。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!

  在前边几期推文《Stata17新亮点——解放表格输出生产力》《辞旧迎新——Stata17之Do-file编辑器优化》以及《初识PyStata》中,我们分别介绍了Stata17表格输出方式的更新、do-file编辑器的改进和PyStata。今天我们就来看一下Stata17的另一新增亮点—— Making Stata faster。
  Stata在重视数据处理准确性的同时也非常重视它的运行速度,Stata17更新了sortcollapse背后的算法,使这些命令运行地更快。同时,对一些估计命令,如mixed命令,运行速度上也得到了改进。

  我们今天使用timer命令分别测试sort命令和collapse命令在Stata16和Stata17中的运行速度,看看在Stata17中这两个命令的运行速度是否真的提高了呢?

  在开始测试之前先一起来简单了解一下timer命令的用法吧!

timer 命令可以记录并报告执行代码所花费的时间。

timer clear [#] 可以将计时器重置。

timer on #timer off # 分别代表计时开始和计时结束。

timer list [#] 可以列出计时。

其中#可以是一个1-100的整数。


01

测试sort命令的速度


我们首先随机生成一个含有10000000个样本的大数据集,使sort令对数据进行排序并对排序部分的程序分别进行五次测速,取五次时间的平均值。
clear allset obs 10000000gen x1=runiform()gen x2=runiform()gen x3=runiform()gen x4=runiform()gen x5=runiform()gen x6=runiform()gen x7=runiform()gen x8=runiform()save runiform.dta,replacescalar sum=0 //生成一个标量来存储5次运行程序所耗费的总共时间forvalues i = 1/5{ use runiform.dta,clear timer clear 1 timer on 1 sort x1 x2 x3 x4 x5 x6 x7 x8 timer off 1 timer list 1 scalar sum=sum+r(t1)}scalar average=sum/5 //运行时间均值di "使用Stata16耗费的时间为",average在Stata16中运行上述程序,结果如下图所示:





接下来我们在Stata17中执行相同的程序并展示使用Stata17所耗费的时间,看一下Stata17的速度会不会更快呢?




通过在Stata16和Stata17中的对比,我们可以发现,使用Stata17执行包含sort命令的这段程序,速度会更快一些!

02

测试collapse命令的速度


同样,我们先生成一个含有10000000个样本的大数据集,再使用collapse命令,并测试使用collapse命令部分的程序的运行速度。大家如果不太了解collapse命令,可以查看我们之前发布的推文《利用collapse命令转化原始数据》进行学习哦~
clear allset obs 10000000gen gpa= runiform(2,4)format gpa %2.1fgen hour=int(runiform(20,40))gen year=int(runiform(1,4))save college.r.dta,replacescalar sum=0 //生成一个标量来存储5次运行程序所耗费的总共时间forvalues i = 1/5{ use college.r.dta,clear timer clear 1 timer on 1 collapse (mean) gpa,by(year) timer off 1 timer list 1 scalar sum=sum+r(t1)}scalar average=sum/5 //运行时间均值di "使用Stata16耗费的时间为",average

在Stata16中执行上述程序,运行结果如下:






使用Stata17执行上述相同程序并展示使用Stata17所耗费的时间,运行结果如下图所示:




从两张图中可以看出来,使用同一台电脑,同样的程序,Stata16和Stata17运行collapse命令,Stata17平均只耗费了1.3秒,而Stata16平均耗费了10秒左右。

当然,运行相同的程序所耗费的时间每次也都是不同的,这里只是截图了其中一次的来为大家说明。

除了上述测试的sortcollapse命令的速度变快了之外,在Stata17中,用于拟合多级混合效应模型的mixed命令的速度也得到了改进。而且可以在Stata/MP中并行使用用于从CSV和其他带分隔符的文本文件导入数据的import delimited命令。在Stata 17中,它导入大数据集的速度快了四倍。大家有兴趣的话,可以自己测试一下~

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。



今天的推文到这里就结束啦!下期我们会继续为大家分享Stata17的新增功能,大家下期再会哦~期待大家的点赞、关注、评论哟~ 

对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐

初识PyStata

辞旧迎新——Stata17之Do-file编辑器优化

Stata17新亮点——解放表格输出生产力

【爬虫+可视化】链家网北京租房信息

 手把手教你如何获取股票数据和可视化

  Countvalues——数数的超级小帮手

         frame框架进阶篇

 下拉选择框如何变成“小猫咪” | selenium小技巧

  Python中的运算符知多少?

  快来get缺失值的正确打开方式

  frame框架——我到底在哪个“房间”

如何使用Pandas读取txt文件?

基于MySQL数据库实现增量式爬取

寻找春日气息|本月最受欢迎的景点都在这里!

问世间情为何物,大数据也想参悟——后考研时代,何以解忧?唯有数据!

Python与数据库交互—浅述pymysql

偷懒小妙招|selenium之玩转鼠标键盘操作--鼠标篇

大家用Stata来“找茬”

“粉墨登场”——多期双重差分法(DID)的Stata操作

Python与百度地图合璧,绘制棒呆的热力地图

【数据可视化】统计图绘制神器:Seaborn

检索Stata推文的“任意门”学会了这些,分分钟提升你的毕业体验

【爬虫实战】双一流大学的月关注度

【爬虫实战】“中国人不吃这一套”——人民日报微博评论分析

进化的标签管理助手——elabel命令

关于我们 


微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存