我正在构建一个Android应用程序,该应用程序与作为本机库(.so文件)提供的第三方库集成。
应用程序需要使用本机库中的功能,每秒大约0-30次JNI呼叫。
虽然函数调用是非阻塞的并且几乎立即返回,但我想知道是否应该避免这种设计开始,或者可以使用实际频繁的JNI调用的开销?
我在这里读到了类似的问题:What makes JNI calls slow?
但除此之外,我找不到太多关于JNI表现的数字。
答案 0 :(得分:2)
在几年前我看过的设备上,在Java中调用一个空的静态无法方法需要56ns,而通过JNI调用相同的方法需要大约250ns。 (冰淇淋三明治中的调用速度有点慢 - 在Honeycomb中是200ns。)
人们倾向于关注“它是5倍昂贵”的部分。对您的应用程序而言重要的是,30个JNI调用将产生不到8微秒的开销。
除非你每秒呼叫数千次(或数万次),否则不值得担心。