Java 在Android上设计具有频繁JNI调用的应用程序

Java 在Android上设计具有频繁JNI调用的应用程序,java,android,android-ndk,java-native-interface,Java,Android,Android Ndk,Java Native Interface,我正在构建一个Android应用程序,它与作为本机库(.so文件)提供的第三方库集成 该应用程序需要以每秒约0-30次JNI调用的速度使用本机库中的功能 虽然函数调用是非阻塞的,并且几乎立即返回,但我想知道是否应该从一开始就避免这种设计,或者可以使用实践中频繁的JNI调用的开销 我在这里读到了一个类似的问题: 但除此之外,我找不到太多关于JNI性能的数字。在几年前我查看的一台设备上,在Java中调用空的静态无参数方法需要56ns,而通过JNI调用相同的方法需要250ns。(冰激凌三明治的通话速度

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

该应用程序需要以每秒约0-30次JNI调用的速度使用本机库中的功能

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

我在这里读到了一个类似的问题:


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

在几年前我查看的一台设备上,在Java中调用空的静态无参数方法需要56ns,而通过JNI调用相同的方法需要250ns。(冰激凌三明治的通话速度稍慢,蜂巢的通话速度为200纳秒。)

人们倾向于把注意力集中在“价格是5倍贵”的部分。对于您的应用程序来说,重要的是30个JNI调用将产生少于8微秒的开销

这不值得担心,除非你每秒调用数千次(或数万次)