在Android上设计频繁使用JNI的应用程序

时间:2013-07-14 20:37:11

标签: java android android-ndk java-native-interface

我正在构建一个Android应用程序,该应用程序与作为本机库(.so文件)提供的第三方库集成。

应用程序需要使用本机库中的功能,每秒大约0-30次JNI呼叫。

虽然函数调用是非阻塞的并且几乎立即返回,但我想知道是否应该避免这种设计开始,或者可以使用实际频繁的JNI调用的开销?

我在这里读到了类似的问题:What makes JNI calls slow?

但除此之外,我找不到太多关于JNI表现的数字。

1 个答案:

答案 0 :(得分:2)

在几年前我看过的设备上,在Java中调用一个空的静态无法方法需要56ns,而通过JNI调用相同的方法需要大约250ns。 (冰淇淋三明治中的调用速度有点慢 - 在Honeycomb中是200ns。)

人们倾向于关注“它是5倍昂贵”的部分。对您的应用程序而言重要的是,30个JNI调用将产生不到8微秒的开销。

除非你每秒呼叫数千次(或数万次),否则不值得担心。