JNI vs. JNA 性能
我们有一个利用GPU(OpenCL)的本机应用程序,用于具有特定方法的大数据,并且它工作完美,没有问题。项目的一部分(Web和发行版)是由 开发,我们只需要调用本机应用程序/库。c/asm
encrypt/decrypt
JEE
我们尝试使用类将其称为分离的外部进程。问题是我们无法控制应用程序(事件,处理程序,线程等)。我们还尝试将C代码转换为Java代码,但性能下降。除了将本机代码作为进程运行之外,我正在考虑JNA和JNI,但是存在一些问题。Process
问题:
- 为了更好(更快)的读/写解决方案,是否可以在JNI和JNA中通过直接(非托管)内存[Java()]交换数据?
ByteBuffer#allocateDirect()
- 是否可以通过本机代码管理和处理进程,并通过 Java 代码(OpenCL lib)访问 GPU(共享)内存?
- 性能如何?JNA比JNI快吗?
我们在 Redhat Linux6 x64 上有两个 AMD W7000 群集设备。