1

JAVAで配列を並べ替える(新しいインデックスは常に同じ)最速の(リアルタイムデータ処理アプリケーション)方法は何ですか:

例: 私は持っています: double[] A = new double[] {1, 234, 12,99,0};

私はすぐに取得する必要があります: double[] B = new double[] {A[2], A[4], A[0],A[1],A[3]};

しかし、おそらくこれはとにかくそれを行うための最も効率的な方法ですか?

フィードバックをお寄せいただきありがとうございます

4

1 に答える 1

1

あなたの現在のアプローチよりもうまくやれるとは思えません

double[] B = new double[] {A[2], A[4], A[0], A[1], A[3]};

他のシーケンスの候補としては、Arrays.copyOfまたはの形式が考えられますArrays.copyOfRangeが、ここで実行する必要がある最小限の作業は次のとおりです。

  • 新しい配列を作成する
  • 配列内の各要素へのランダムアクセス

(キャッシュ ラインを利用するために) 非常に具体的な読み取り/書き込み順序を使用すると、わずかにうまくいく可能性があります。

   double[] B = new double[A.length];
   B[2] = A[0];
   B[3] = A[1];
   B[4] = A[3];
   B[0] = A[2];
   B[1] = A[4];

しかし、これが著しく改善されるという強い期待はありません。L1/L2 キャッシュ ヒットを排除または最適化しようとしている場合は、マイクロ ベンチマークを開始する時期です。本当の答えは、実験する必要があるということです。

于 2013-10-06T21:49:26.010 に答える