繁体   English   中英

重新排列数组的最快方法是什么

[英]What is the Fastest way to reorder an array

什么是最快的(实时数据处理应用程序)对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.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缓存命中点,那么该是开始微基准测试的时候了,真正的答案是您应该尝试一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM