哪种方法是从Java访问本机代码的最快方法?

Sim*_*son 9 java java-native-interface native

哪种方法是从Java调用本机库的最快方法?

我所知道的是

  • NativeCall - 我们目前正在使用的
  • JNA - 没有使用它,但看起来很合理
  • JNI - 看起来很可怕,但如果我们得到速度,我们就会这样做

Jon*_*eet 12

Swig也使JNI更容易.

在速度方面,我怀疑会有微妙的变化 - 我强烈建议你选择一个你知道你会做很多的电话,并对所提供的所有解决方案进行基准测试.


eri*_*son 10

JNI是最快的.与JNI相比,JNA非常慢(调用开销可能只有一个数量级),但它是一个很棒的库,因为它使本机访问变得如此简单.如果你需要偶尔调用一些原生API,JNA是很棒的.如果你关心性能,我不会在任何"紧密循环"中使用它.

我不确定NativeCall在频谱中的位置.