Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将一个双数组和两个长数组转储到ByteBuffer中_Java_Arrays_Bytebuffer - Fatal编程技术网

在Java中将一个双数组和两个长数组转储到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]);

我想将一个双数组和两个长数组转储到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=新的双精度[size];
长[]arr2=新长[尺寸];
长[]arr3=新长[尺寸];
对于(int i=0;i如果您确实希望“大容量转储”数据,而不是以某种依赖于应用程序的方式交错数据,则可以在
ByteBuffer
中创建
LongBuffer
DoubleBuffer
视图。一般过程如下:

  • 调用
    position()
    将缓冲区的位置设置为要存储数组的任何位置(必须根据原语的大小进行计算)
  • 在缓冲区上调用
    slice()
    ,以创建一个新的缓冲区,该缓冲区共享备份存储区,但偏移
  • 在新缓冲区上调用
    asLongBuffer()
    asDouble()
    buffer
  • 对步骤3中创建的缓冲区调用bulk
    put()
    方法

  • 这个过程很方便,而不是性能提升。除非你说的是数千万个元素,否则你根本看不到任何改进,即使这样,你也可能会看到微秒的改进。

    如果我是你,我会在假设速度太慢之前测量典型输入的吞吐量。你不是“批量转储”在JDK中,没有任何东西知道您想要如何做。