在 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
or的形式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 缓存命中,那么是时候开始微基准测试了,真正的答案是您应该进行实验。