2

1 つの Double 配列と 2 つの 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]);
}

これは効率的ではないようです。それらをボークダンプする方法はありますか?

4

1 に答える 1

2

LongBufferアプリケーションに依存する方法でデータをインターリーブするのではなく、データを本当に「一括ダンプ」したい場合はDoubleBufferByteBuffer. 一般的な手順は次のとおりです。

  1. を呼び出しposition()て、配列を格納する場所にバッファーの位置を設定します (プリミティブのサイズに基づいてこれを計算する必要があります)。
  2. バッファーを呼び出しslice()て、バッキング ストアを共有するがオフセットされている新しいバッファーを作成します。
  3. 新しいバッファーで呼び出しasLongBuffer()またはバッファーします。asDouble()
  4. put()手順 3 で作成したバッファーで一括メソッドを呼び出します。

このプロセスは便宜上のものであり、パフォーマンスの向上ではありません。数千万の要素を話している場合を除き、改善が見られる可能性はほとんどなく、それでもおそらくマイクロ秒を見ているでしょう.

于 2011-08-07T12:29:36.480 に答える