java - 在 Android 上设计一个频繁 JNI 调用的应用程序

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

我正在构建一个与作为 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/

相关文章:

java - Spring MVC + hibernate : data validation strategies

android - 如何在 Android 中解析 JSON 对象

java - Android NDK_PROJECT_PATH = null

android - 如何在 Android NDK 的 Android.mk 文件中正确包含预建静态库?

java - 如何使用信号量在 Java 中编写哲学家就餐的代码?

java - 在不使用模数、除法或乘法的情况下查找质数

java - MQ channel 从给出错误的代码重新启动

java - 使用 PHP session 与我的 android 应用程序登录

android - 什么时候使用谷歌 "Application Licensing"?

android - 为什么 Android jvm->GetEnv() 会为多个线程返回相同的 "env"。?