在Java中复制double []的最快方法是什么?

Sim*_*mon 7 java

简单的问题,在Java中复制双精度数组的最快方法是什么.我目前这样做......

public static double[] clone_doubles(double[] from)
{
    double[] to = new double[from.length];
    for (int i = 0; i < from.length; i++) to[i] = from[i];
    return to;
}
Run Code Online (Sandbox Code Playgroud)

它也进行分配以避免溢出,但如果有更快的方法我将分配与副本分开.

我看过了Arrays.copyOf(),System.arraycopy()但我想知道是否有人有任何巧妙的技巧.

编辑: 如何复制double[][]

小智 13

Java Practices对以下数组的不同复制方法进行了比较int:

以下是他们网站的结果:

java -cp.-Xint ArrayCopier性能250000

使用clone:93 ms
使用System.arraycopy:110 ms
使用Arrays.copyOf:187 ms
使用for循环:422 ms

看起来像是System.arraycopy()和之间的关系clone().

  • @Simon 该网站说“避免实现克隆”,但并不是为了避免克隆 (2认同)

Mik*_*uel 7

System.arraycopy 如果您只想从一个阵列复制到另一个阵列,那么这可能是您最好的选择.

除此以外

public static double[] clone_doubles(double[] from) {
  return (double[]) from.clone();
}
Run Code Online (Sandbox Code Playgroud)

会给你一个克隆.