前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAS or R:谁更适合你?(三)

SAS or R:谁更适合你?(三)

作者头像
用户7652506
发布2020-10-23 16:28:36
1.1K0
发布2020-10-23 16:28:36
举报

在前面

上一起和大家聊了SAS和R在语法上的区别,本期继续昨天的话题,从“性能与并行计算(Performance & Parallel Computation)”这个方面来比较SAS和R。性能一直是许多同学孜孜追求的目标之一,SAS和R为了实现高性能各有什么独门秘籍?易用性怎样?本期将为您揭晓

另外,大猫最近收到很多同学给公众号后台的留言,大猫也在考虑专门出一期FAQ来集中回答大家的问题,所以,如果大家有什么问题,可以给大猫留言哦。大猫最近在写毕业论文有点忙,但是尽量会抽空回复~

能重要吗?

相对于Syntax,Performance相对而言不怎么受到经济学研究者的关注,因为一般来说(对于大猫所见的50%以上的研究生),经济学所要处理的数据很多都没有大到需要考虑Performance的地步,而且因为上文提到过的I/O Intensive特性,数据处理的瓶颈在磁盘,而除了使用大容量高频率内存与SSD,貌似也没有什么特别好的提高I/O性能的方法(大猫现在码字用的是32G 2133MHz内存 + 1TB SSD的笔记本)。但话虽如此,Performance总归是完美主义者追求的目标,而且对于那些经常做Simulation以及Quantative Trading这类CPU Intensive任务的童鞋,Performance还是很重要的。

总而言之,对于不同的研究任务,性能的重要性是不同的,但这绝不意味着大家可以忽略性能这一要素,大猫见过太多的例子,明明是一个很简单的任务,要大猫写程序可能十几秒就解决了,但是有些童鞋写了一个非常冗长的循环语句,几个小时都出不来结果。所以说,与其一直纠结自己用的工具性能是否够用,不如多花时间优化下自己的代码。毕竟对于大多数童鞋,你的任务远远没有到达硬件和软件上限的地步。

能于并行计算

很多时候,决定程序性能的是你的编程水平而不是软硬件

要提高性能,最常见的办法就是并行计算了。并行计算可以在一个CPU的多个核上运行,也可以组建计算机集群多CPU进行,楼主的研究因为对于计算的要求不是那么大,因而只试过在单CPU的多个核上面进行并行运算,下文也就在此范围内展开讨论(如果想要了解SAS进行分布式计算的内容,大家可以考虑它的Grid模块)。SAS和R在这个方面可谓各有特色,伯仲之间。SAS的并行计算是被做到特定的Proc步中的,而与数据处理最相关的Data步都不支持并行计算。这就导致在SAS中能用得上并行计算的时候很少(毕竟,SASor们用的最多的是data步而不是proc步)。不过,现在SAS推出了一个新的高性能处理模块HPA(High Performance Analytics),支持将数据分散存储在不同的磁盘/分区中(Strip Storage),这样在读取的时候可以做到某种程度上的并行。楼主当年曾经在一台四硬盘Raid 0的机子上体验了一下这个功能,发现对于中规模的数据(<=5g),没有明显速度上的提升,反而增加了操作的复杂性。此外,在SAS中配置HPA模块也比较复杂,故大猫最终放弃。

至于R,并行计算主要是靠各种包,例如Snow、doParalle等,部署这些包很简单,门槛比SAS要低很多,然而R的并行计算应用范围也比较特定,主要就是用在Simulation上,比如各种Monte Carlo,此时速度提升是非常明显的。除此以外的应用场景,和SAS的Data步一样,R并不怎么支持并行计算。另一方面,并行计算也会产生很多Headover,盲目追求并行的效果并不好。

另一点大猫想强调的是,R的Performance很大程度上受使用者水平的限制,如果你安装了MRO(Microsoft R Open,一个内置了Intel并行计算库的R版本,详见大猫前几期的《高效R开发:Microsoft R Open》)并且掌握了data.table、doParalle等包(在“(4)关于开源包”中详述),那么R的性能绝对让你放心,但如果你不知道这些包或不懂得如何正确配置,那么R的性能是远远比不上SAS的,这也是为什么很多初学者一直在抱怨R很慢的原因。而SAS就不一样了,它的并行计算整合在Proc步中,只要你正常使用,你总会享受到它带来的便利。

R

的性能上限在哪里?

那么如果一个是有经验的SAS使用者,一个是有经验的R使用者,他们能把各自手上的武器发挥到什么程度呢?换句话说,SAS和R的性能天花板在哪里?网上有一篇Revolution Analytics写的白皮书,宣称在同样使用集群计算(SAS/Grid与商业化的RRE)的情况下,R在性能上打败了SAS,是其10x ~ 300x。这个结果着实令人震惊,Revolution Analytics把测试的详细步骤都公布了出来,根据白皮书,Revolution Analytics模拟了一个商业中非常典型的数据处理项目,既包含了I/O Intensive又包含了CPU Intensive的任务,而且为了保证比较的公平,他们邀请了一个非常有经验的SAS Consultant来对SAS代码进行优化。对于以上比较,大猫建议大家理性看待,想要知道更多信息,小伙伴们请戳http://www.revolutionanalytics.com/whitepaper/revolution-r-enterprise-faster-sas。

对于R的使用者而言,好消息不仅如此。上一段提到的Revolution Analytics已于2015年被微软收购,在有了微软爸爸之后,其主打产品RRE(Revolution R Open)也改名成MRO(Microsoft R Open)。然而不仅是名字的改变,MRO在许多方面都超越了RRE,具体有:

  • 进一步整合了Intel的并行处理库,简化了安装;
  • 为原来商业化的RRE推出免费版本(Microsoft R Client,MRC),用户可以免费使用原来昂贵的分布式处理功能
  • 商业化的RRE版本继续升级为MRS(Microsoft R Server),并且与Hadoop、SQL Server以及微软云服务Azure等无缝整合,提供高性能的库内分析工具
  • 推出RTVS(R Tools for Visual Studio),这样小伙伴们就能用这个星球上最强大的IDE进行R开发了

是不是觉得有些激动?快点来尝试吧!

期预告

下一期大猫会带领大家探索编程语言的另一个重要指标:商业/社区支持,一定要继续follow哦!

我是大猫,咱们下一期见!

考文献

大猫在人大经济论坛上的原帖请见

http://bbs.pinggu.org/thread-3861040-1-1.html
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大猫的R语言课堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档