1

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

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

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

我在这里读过一个类似的问题:是什么让 JNI 调用变慢?

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

4

1 回答 1

2

在几年前我看过的设备上,在 Java 中调用一个空的静态无参数方法需要 56ns,而通过 JNI 调用相同的方法需要大约 250ns。(Ice Cream Sandwich 的通话速度有点慢——在 Honeycomb 中是 200ns。)

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

除非您每秒调用数千(或数万)次,否则无需担心。

于 2013-07-15T17:04:56.857 回答