我正在构建一个与作为 native 库(.so 文件)提供的第 3 方库集成的 Android 应用程序。
应用程序需要以每秒大约 0-30 个 JNI 调用的速度使用 native 库中的功能。
虽然函数调用是非阻塞的并且几乎立即返回,但我想知道是否应该从一开始就避免这种设计,或者可以利用实践中频繁 JNI 调用的开销?
我在这里读过类似的问题:What makes JNI calls slow?
但除此之外,我找不到太多关于 JNI 性能的数据。
最佳答案
在几年前我看过的一个设备上,在 Java 中调用一个空的静态无参数方法花费了 56 纳秒,而通过 JNI 调用相同的方法花费了大约 250 纳秒。 (Ice Cream Sandwich 中的调用速度稍慢 - Honeycomb 中的调用速度为 200 纳秒。)
人们倾向于关注“价格是原来的 5 倍”部分。对于您的应用程序来说,重要的是 30 个 JNI 调用将产生不到 8 微秒的开销。
除非您每秒调用它数千(或数万)次,否则不值得担心。
关于java - 在 Android 上设计一个频繁 JNI 调用的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17643529/