2013-10-06 75 views
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]};

但也許這是這是最有效的方式做到這一點呢?

您的反饋

+3

你現在的方法太慢了嗎? –

+0

你可以在兩個地方刪除'new double []',但是我沒有看到你期望做得比這更好,或者你爲什麼認爲它可能是代碼瓶頸,或者如果你不這樣做,爲什麼你在乎。 – EJP

回答

1

非常感謝我懷疑你可以比目前的方法做的更好

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

其他序列可能的候選人可能是Arrays.copyOfArrays.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緩存命中,那麼現在是時候開始微基準測試了,真正的答案是您應該嘗試一下。

+0

非常感謝馬克,聽起來很合理 – frito