Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重新排列阵列的最快方法是什么_Java_Arrays - Fatal编程技术网

Java 重新排列阵列的最快方法是什么

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]}; 其他序列

在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]};
其他序列的可能候选形式可能是
数组.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[]
,但我看不出你希望如何做得更好,或者为什么你认为这可能是一个代码瓶颈,或者,如果你不这样做,为什么你会在意。