JNI表现

时间:2009-10-13 18:33:14

标签: java-native-interface hdf5

我们的主程序是在java中,但是从存储中提取数据的代码是用C语言编写的。我需要从提取的数据中构建一个HDF5文件。使用JNI调用C代码获取数据然后从Java构建HDF5文件还是从C代码构建HDF5会更好吗?

我对JNI或C没什么经验。

此外,我们的主要标准之一是表现。使用JNI时有多少性能影响?

3 个答案:

答案 0 :(得分:6)

函数调用边界“慢”,所以如果你对本机例程做了很多调用,那么性能就会受到影响。

可能从转移到JNI中受益的一个例子(我强调可能,因为Java对于许多目的而言足够快)将是一个例程在大位图上进行某种图像处理。但是为每个像素调用JNI例程比在纯Java中的循环中调用它要快得多。

坦率地说,将数据从一种格式提取到另一种格式是最好用Python这样的“脚本”语言完成的,并且绝不会受到CPU的限制。相反,磁盘速度将比任何语言解释器慢。

答案 1 :(得分:1)

在我看来,由于你对C语言的经验很少,你最好的选择就是用Java来实现.JNI真的不是那么糟糕。

答案 2 :(得分:0)

除了C语言之外,我对HDF接口并不熟悉,所以我无法真正比​​较你。

我想指出这是所有其他接口使用的API,因此如果您发现需要获得最大性能,那么C API将是最好的。

还有一个问题是您可以使用哪些API部分。例如,我最初是从C ++界面开始的。某些API仍然只能在C API中使用。当您使用C& C时,这不是问题。 C ++但如果您无法使用所需的API,则可能会出现问题。

话虽如此,你需要根据C的对象模型搞砸你的头:例如。使用指针,句柄等。