为什么使用运算符`$`比使用`.jcall`表达式非常耗时

时间:2014-01-10 01:03:56

标签: r rjava

我知道在R中调用java接口的两种表达式类型。例如,类public void add(int a,int b){}中有一个java函数定义Test


library(rJava)
.jinit()
.jaddClassPath(dir( "lib", full.names=T ))

Test = J('...Test')
test = new(Test)
a = as.integer(3)
b = as.integer(4)
.jcall(test,'V','add',a,b) #first type of expression
test$add(a,b) #second type of expression

我测试了两种表达式,第一种类型比第二种更有效。我想知道原因的细节。 非常感谢。

1 个答案:

答案 0 :(得分:4)

根据rjava网站:

  

此接口使用Java反射API来查找正确的方法   它慢得多,可能不对(适用于简单的例子,但是   可能不是更复杂的。)

因为反思它的速度较慢。