r与java哪个效率高_从递归比较运算速度:R,Java和Rjava

最近做了个验证直观的测试,分两部分。(一)

对于C/CPP,两者编写繁琐,前者非OOPL,后者深不可测;比较务实的是学java。对于R使用者(估计matlab也类似),在遇到数值迭代、循环嵌套等情形时,借助rJava可以将这些任务交给java做,或在java中调用R完成统计模型。

为了对比,这里测试了java和R递归计算fibonacci(40)的速度。

大体都肯定了jvm的优化力。但对R测试一直没有。先贴源码(写得很简陋):

for java

package trier;

public class TRIER

{

public static void main(String[] args){

long startTime=System.currentTimeMillis();

System.out.println(fila(40));

long endTime=System.currentTimeMillis(); //获取结束时间

System.out.println("程序运行时间: "+(endTime-startTime)+"ms");

}

public static long fila(int num) {

return (num<3)? 1: fila(num-1)+fila(num-2);

}

}

for R

ptm

fila=function(x){

if(x<3)return(1)

y=fila(x-1)+fila(x-2)

return(y)

}

fila(40)

proc.time() - ptm

结果

for java:

102334155

程序运行时间: 1390ms

for R:

user     system  elapsed

539.28    0.16   542.04

注意:1.R的运行时间单位是sec,所以速度差很多(我几近睡着了)。

(二)

(一)比较了R和java,java要显著快于R。那么从R中调用java耗的时间是怎样呢?

直观上,可以肯定Rjava慢于java,快于R,下面验证一下

fib$filaBmk()  # or .jcall(fib,"S","filaBmk")

[1] "The result is 102334155. The running time is 1438ms"

发现还是很快的,不比java慢多少,那么换个复杂的例子Fibonacci(50)。不要小看增加这10个数,运算时间大增。

rjava的绩效:

fib$filaBmk()

[1] "The result is 12586269025. The running time is 176640ms"

java的绩效:

12586269025

程序运行时间: 163843ms

差别是有,但完全可以接受。R就不做了,估计睡一觉醒来了都没完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值