什麼是最快的(實時數據處理應用程序)的方式來重新排序(新指標都是一樣的)Java中的數組的最快方法:什麼是重新排列數組
如: 我有: double[] A = new double[] {1, 234, 12,99,0};
我需要得到迅速: double[] B = new double[] {A[2], A[4], A[0],A[1],A[3]};
但也許這是這是最有效的方式做到這一點呢?
您的反饋
什麼是最快的(實時數據處理應用程序)的方式來重新排序(新指標都是一樣的)Java中的數組的最快方法:什麼是重新排列數組
如: 我有: double[] A = new double[] {1, 234, 12,99,0};
我需要得到迅速: double[] B = new double[] {A[2], A[4], A[0],A[1],A[3]};
但也許這是這是最有效的方式做到這一點呢?
您的反饋
非常感謝我懷疑你可以比目前的方法做的更好
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緩存命中,那麼現在是時候開始微基準測試了,真正的答案是您應該嘗試一下。
非常感謝馬克,聽起來很合理 – frito
你現在的方法太慢了嗎? –
你可以在兩個地方刪除'new double []',但是我沒有看到你期望做得比這更好,或者你爲什麼認爲它可能是代碼瓶頸,或者如果你不這樣做,爲什麼你在乎。 – EJP