JNA比JNI慢得多,但容易得多。如果性能不是问题,请使用JNA。
使用直接缓冲区的优势在于,最关键的操作不使用JNI或JNA,因此速度更快。当它们变成单个机器代码指令时,它们使用内在函数。
如果Java代码比C慢得多,则可能是代码未充分优化。通常,GPU应该完成所有工作,因此,如果Java速度稍慢,则不会有太大的不同。
例如,如果您将99%的时间花费在GPU上,而Java花费的时间是原来的两倍,则总时间将降低99 + 2%或1%。

JNA比JNI慢得多,但容易得多。如果性能不是问题,请使用JNA。
使用直接缓冲区的优势在于,最关键的操作不使用JNI或JNA,因此速度更快。当它们变成单个机器代码指令时,它们使用内在函数。
如果Java代码比C慢得多,则可能是代码未充分优化。通常,GPU应该完成所有工作,因此,如果Java速度稍慢,则不会有太大的不同。
例如,如果您将99%的时间花费在GPU上,而Java花费的时间是原来的两倍,则总时间将降低99 + 2%或1%。