楼主: jerryren
3627 0

[实际应用] 从递归比较运算速度:R,Java和Rjava [推广有奖]

  • 1关注
  • 4粉丝

已卖:155份资源

副教授

70%

还不是VIP/贵宾

-

威望
0
论坛币
870 个
通用积分
34.1795
学术水平
19 点
热心指数
27 点
信用等级
16 点
经验
39901 点
帖子
708
精华
0
在线时间
1010 小时
注册时间
2005-2-7
最后登录
2025-12-26

楼主
jerryren 发表于 2014-7-30 02:54:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

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

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

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

已经有好多测试帖子了,比如这里:http://fengmk2.cnpmjs.org/blog/2 ... n-php-ruby-lua.html

大体都肯定了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 <- proc.time()

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,所以速度差很多(我几近睡着了)。

      2.都是递归算法的比较,尽管存在非递归算法,因此看到有些网友的测试“不公平”。关于空间和时间的厚此薄彼,见http://www.javacodegeeks.com/201 ... g-introduction.html

      3.由于计算机性能不同,请别拿这里的结果去和http://fengmk2.cnpmjs.org/blog/2 ... n-php-ruby-lua.html作比较——我的电脑很破。


(二)

(一)比较了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就不做了,估计睡一觉醒来了都没完。



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:递归比较运算速度 rjava Java 运算速度 jav Java

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 21:55