在Java中将一个双数组和两个长数组转储到ByteBuffer中
我想将一个双数组和两个长数组转储到bytebuffer中。我可以用一个循环来做在Java中将一个双数组和两个长数组转储到ByteBuffer中,java,arrays,bytebuffer,Java,Arrays,Bytebuffer,我想将一个双数组和两个长数组转储到bytebuffer中。我可以用一个循环来做 double[] arr1 = new double[size]; long[] arr2 = new long[size]; long[] arr3 = new long[size]; for(int i=0;i<size;i++){ buffer.putDouble(arr1[i]); buffer.putLong(arr2[i]); buffer.putLong(arr3[i]);
double[] arr1 = new double[size];
long[] arr2 = new long[size];
long[] arr3 = new long[size];
for(int i=0;i<size;i++){
buffer.putDouble(arr1[i]);
buffer.putLong(arr2[i]);
buffer.putLong(arr3[i]);
}
double[]arr1=新的双精度[size];
长[]arr2=新长[尺寸];
长[]arr3=新长[尺寸];
对于(int i=0;i如果您确实希望“大容量转储”数据,而不是以某种依赖于应用程序的方式交错数据,则可以在ByteBuffer
中创建LongBuffer
和DoubleBuffer
视图。一般过程如下:
调用position()
将缓冲区的位置设置为要存储数组的任何位置(必须根据原语的大小进行计算)
在缓冲区上调用slice()
,以创建一个新的缓冲区,该缓冲区共享备份存储区,但偏移
在新缓冲区上调用asLongBuffer()
或asDouble()
buffer
对步骤3中创建的缓冲区调用bulkput()
方法
这个过程很方便,而不是性能提升。除非你说的是数千万个元素,否则你根本看不到任何改进,即使这样,你也可能会看到微秒的改进。如果我是你,我会在假设速度太慢之前测量典型输入的吞吐量。你不是“批量转储”在JDK中,没有任何东西知道您想要如何做。