我想将一个Double数组和两个Long数组转储到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]);
}
这看起来效率不高。有没有办法拒绝抛弃它们?
答案 0 :(得分:2)
如果您真的想“批量转储”数据,而不是以某种依赖于应用程序的方式对其进行交错,那么您可以在LongBuffer
中创建DoubleBuffer
和ByteBuffer
个视图。一般程序如下:
position()
将缓冲区的位置设置为您想要存储数组的位置(您必须根据基元的大小来计算)。slice()
以创建一个共享后备存储但是已偏移的新缓冲区。asLongBuffer()
或asDouble()
缓冲区。put()
方法。此过程非常方便,不性能增强。除非你谈论数以千万计的元素,否则你根本不可能看到任何改进,即便如此,你可能会看到微秒。