Java 重新排列阵列的最快方法是什么
在JAVA中,最快的(实时数据处理应用程序)重新排序(新索引始终相同)数组的方法是什么: e、 g: 我有:Java 重新排列阵列的最快方法是什么,java,arrays,Java,Arrays,在JAVA中,最快的(实时数据处理应用程序)重新排序(新索引始终相同)数组的方法是什么: e、 g: 我有: double[]A=新的double[]{1234,12,99,0} 我需要迅速采取行动: double[]B=新的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]}; 其他序列
double[]A=新的double[]{1234,12,99,0}代码>
我需要迅速采取行动:
double[]B=新的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]};
其他序列的可能候选形式可能是数组.copyOf
或数组.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];
但我并不强烈期望这会明显好起来。如果您正试图消除或优化一级/二级缓存命中率,那么是时候开始微基准测试了,而真正的答案是您应该进行实验。我怀疑您是否能够比当前的测试方法做得更好
double[] B = new double[] {A[2], A[4], A[0], A[1], A[3]};
其他序列的可能候选形式可能是数组.copyOf
或数组.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];
但我并不强烈期望这会明显好起来。如果您正试图消除或优化一级/二级缓存命中率,那么是时候开始微基准测试了,真正的答案是您应该进行实验。您当前的方法是否太慢?您可以在这两个地方删除新的double[]
,但我看不出您希望如何做得更好,或者为什么你认为这可能是一个代码瓶颈,或者,如果你不这么认为,为什么你会在意。你当前的方法太慢了吗?你可以在这两个地方删除new double[]
,但我看不出你希望如何做得更好,或者为什么你认为这可能是一个代码瓶颈,或者,如果你不这样做,为什么你会在意。