我正在使用JNI将大量数据从Java发送到C ++,并且为了最大程度地减少传输数据的成本并避免不必要的复制,我尝试实现GetDirectBufferAddress来直接访问内存位置而不是GetDoubleArrayElements。我还通过System.currentTimeMillis()
从Java端对这两种方法运行了性能指标,并获得了以下性能时间:
GetDoubleArrayElements:98毫秒 GetDirectBufferAddress:96毫秒
几乎没有性能提高。有什么可能会发生这种情况吗?我使用ByteBuffer.allocateDirect().order(ByteOrder.nativeOrder)
和arrBuff.putDouble(arr[i])
在Java端分配了ByteBuffer。我想念什么吗?任何参考材料将不胜感激,我只是想学习。