【发布时间】:2013-02-11 21:50:24
【问题描述】:
在 Java 中,我有一个接口:
public interface I {...}
声明一个函数void f(),以及一些类:
public class A implements I {...}
public class B implements I {...}
public class C implements I {...}
...
我经常调用原生函数:
public native void nativeFunc(I obj);
在 C++ 中,我得到一个
jobject jobj
目的是调用
jobj.f();
无需每次都通过链条
cls = jenv->GetObjectClass(jobj); (1)
mid = jenv->GetMethodID(cls, "f", "()V"); (2)
jenv->CallVoidMethod(jobj, mid); (3)
我似乎无法在本地调用之间缓存mid。作为另一个建议,我可以从第 (1) 行开始,然后使用缓存的map <jclass, jmethodID>。但是,这也可能不起作用,因为同一类的 jclass 引用可能不同。
有什么优化方案吗?
【问题讨论】:
标签: java c++ caching optimization java-native-interface