System.arraycopy是我的答案。请让我知道还有什么更好的方法。谢谢
private static long[] r1 = new long[64];
private static long[][] r2 = new long[64][64];
private static void testFillPerformance() {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println(sdf.format(new Date()));
Arrays.fill(r1, 0l);
long stamp0 = System.nanoTime();
long stamp1 = System.nanoTime();
stamp0 = System.nanoTime();
for (int i = 0; i < 64; i++) {
for (int j = 0; j < 64; j++)
r2[i][j] = 0l;
}
stamp1 = System.nanoTime();
System.out.println(String.format("Arrays' 2-looping takes %s nano-seconds.", stamp1 - stamp0));
stamp0 = System.nanoTime();
for (int i = 0; i < 64; i++) {
System.arraycopy(r1, 0, r2[i], 0, 64);
}
stamp1 = System.nanoTime();
System.out.println(String.format("System.arraycopy looping takes %s nano-seconds.", stamp1 - stamp0));
stamp0 = System.nanoTime();
Arrays.fill(r2, r1);
stamp1 = System.nanoTime();
System.out.println(String.format("One round Arrays.fill takes %s nano-seconds.", stamp1 - stamp0));
stamp0 = System.nanoTime();
for (int i = 0; i < 64; i++)
Arrays.fill(r2[i], 0l);
stamp1 = System.nanoTime();
System.out.println(String.format("Two rounds Arrays.fill takes %s nano-seconds.", stamp1 - stamp0));
}
12:33:18
阵列的2循环需要133536纳秒。
System.arraycopy循环需要22070纳秒。
一轮Arrays.fill需要9777纳秒。
两轮Arrays.fill需要93028纳秒。
12:33:38
阵列的2循环需要133816纳秒。
System.arraycopy循环需要22070纳秒。
一轮Arrays.fill需要17042纳秒。
两轮Arrays.fill需要95263纳秒。
12:33:51
阵列的2循环时间为199187纳秒。
System.arraycopy循环需要44140纳秒。
一轮Arrays.fill需要19555纳秒。
两轮Arrays.fill需要449219纳秒。
12:34:16
阵列的2循环耗时199467纳秒。
System.arraycopy循环需要42464纳秒。
一轮Arrays.fill需要17600纳秒。
两轮Arrays.fill需要170971纳秒。
12:34:26
阵列的2循环需要198907纳秒。
System.arraycopy循环需要24584纳秒。
一轮Arrays.fill需要10616纳秒。
两轮Arrays.fill需要94426纳秒。