R-revolution与MATLAB的矩阵运算性能测试
科普:
1.R语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发(也因此称为R),现在由“R开发核心团队”负责开发。
2.R-revolution经过了一些加强,使得他能运用到更多的领域:
- 高性能,R-revolution使用intel的数学核心函数库来进行大部分数学计算任务,使得它的运算速度比R-Base有显著提高
- 高可靠性,R-revolution建立在最新的稳定发行版之上,使得你不用担心关键更新和bug。
一句话,R-revolution是更换了intel数学引擎的R语言版本,据其官方说性能有很大提高,而且支持并行处理。于是我就进行了一个测试。
测试平台:win7旗舰版 sp1,64bit
处理器:AMD Phenom(tm) II N830 Triple-core Processor 2.10GHz
内存:6GB
使用的R版本为:R-X64-3.0.1
使用的R-revolution版本为:Community 6.2 X64
matlab为:R 2013a X64
测试的主要目的是为了检测其矩阵运算性能,因此我选取了四个函数进行测试,分别是:
eigen(特征分解),svd(奇异值分解),qr(QR分解),*(矩阵乘法)
矩阵的来源是方差为0,方差为1随机生成的1000*1000的方阵
测试的结果如下:
矩阵运算性能测试 | R | R-revolution | MATLAB |
eigen | 16.01 | 4.99 | 2.50 |
svd | 10.20 | 1.78 | 0.85 |
qr | 1.60 | 1.19 | 0.10 |
* | 2.56 | 0.14 | 0.08 |
所有单位均为秒。
看来,运算性能上差别还是非常大的。测试的目的不是为了争论语言,而是为了让好钢用在刀刃上,所以,大量矩阵运算的算法还是用matlab比较合适。
再来看看CPU的使用情况。
这是我从录制出来的视频中截出来的一张图片,CPU占用率在45%左右,稳定不变,多核都在运算,但是利用率不一。(群里也有其他人反应说他们只有一个核心在运算,这个我是没有遇到就是了)。再来看看R-revolution,看看究竟革了多少命。
三个CPU都是间歇性跑满,中间有些许波动。总体来说利用率很高。然后再看以矩阵运算出门的matlab
matlab是将CPU一直压榨在慢负荷运转,看来矩阵运算对于计算机资源的利用也是matlab技高一筹。
//在本文写完之后,群里面有同学提醒我官方有一种改进R矩阵运算能力低下的方案。针对CPU优化的动态链接库,替换官方的通用DLL。
由于我的机器装的版本没有对应的DLL可以替换,所以测试结果暂时无法提供,但是我已经委托朋友去进行测试了。过几天再写个续集吧。
所有的中间数据和CPU运行视频均在这里