আমার নিজের পরীক্ষায় System.arraycopy () একাধিক মাত্রার অ্যারে অনুলিপি করার জন্য লুপের জন্য ইন্টারলিভিংয়ের চেয়ে 10 থেকে 20 গুণ বেশি গতিযুক্ত:
float[][] foo = mLoadMillionsOfPoints();
float[][] fooCpy = new float[foo.length][foo[0].length];
long lTime = System.currentTimeMillis();
System.arraycopy(foo, 0, fooCpy, 0, foo.length);
System.out.println("native duration: " + (System.currentTimeMillis() - lTime) + " ms");
lTime = System.currentTimeMillis();
for (int i = 0; i < foo.length; i++)
{
for (int j = 0; j < foo[0].length; j++)
{
fooCpy[i][j] = foo[i][j];
}
}
System.out.println("System.arraycopy() duration: " + (System.currentTimeMillis() - lTime) + " ms");
for (int i = 0; i < foo.length; i++)
{
for (int j = 0; j < foo[0].length; j++)
{
if (fooCpy[i][j] != foo[i][j])
{
System.err.println("ERROR at " + i + ", " + j);
}
}
}
এই মুদ্রণ:
System.arraycopy() duration: 1 ms
loop duration: 16 ms
arraycopy
ব্যবহার করে প্রয়োগ করা যেতে পারে । অন্যদের অনুলিপি করা প্রতিটি উপাদানগুলির জন্য একটি রানটাইম ধরণের চেক প্রয়োজন।memcpy
memmove