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

2020-10-23 16:28:36 浏览数 (1)

在前面

上一起和大家聊了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

0 人点赞