我们的主程序是在java中,但是从存储中提取数据的代码是用C语言编写的。我需要从提取的数据中构建一个HDF5文件。使用JNI调用C代码获取数据然后从Java构建HDF5文件还是从C代码构建HDF5会更好吗?
我对JNI或C没什么经验。
此外,我们的主要标准之一是表现。使用JNI时有多少性能影响?
答案 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的对象模型搞砸你的头:例如。使用指针,句柄等。