代码之家  ›  专栏  ›  技术社区  ›  Simon Nickerson

从Java访问本机代码的最快方法是什么?

  •  9
  • Simon Nickerson  · 技术社区  · 17 年前

    从Java调用本机库的最快方法是什么?

    我知道的是

    • NativeCall -我们目前使用的是什么
    • JNA -我没用过,但看起来很合理
    • JNI -写起来很恐怖,但如果我们有速度的话我们会写的
    4 回复  |  直到 15 年前
        1
  •  12
  •   Jon Skeet    17 年前

    Swig 也使JNI更容易。

    就速度而言,我怀疑会有微妙的变化——我强烈建议你选择一个你知道你会打很多电话的电话,并对提供的所有解决方案进行基准测试。

        2
  •  10
  •   erickson    17 年前

    JNI是最快的。与JNI相比,JNA非常慢(调用开销可能是一个数量级),但它是一个非常棒的库,因为它使本机访问非常容易。如果您需要偶尔调用一些本机API,那么JNA非常好。如果您关心性能,我不会在任何“紧循环”中使用它

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

        3
  •  3
  •   michael aubert    16 年前

    有很多参数会影响编程语言之间接口的性能:JVM运行在什么设备上,是谁开发的(如果不是通常的Sun JVM),是否需要从本机代码回调Java代码,操作系统上JVM的线程模型,以及本机代码的异步程度。。。

    恐怕你找不到一个可靠的基准来准确衡量你需要什么。

        4
  •  2
  •   Brian Agnew    17 年前

    This blog entry 声称由于JNA使用的内省机制,它会比JNI慢很多。我怀疑NativeCall将使用类似的机制,从而以类似的方式执行。

    我支持委员会的建议 SWIG