测试说明:
数组复制其实是很简单的操作,先分配内存再挨个赋值即可。但是 Java 源码却提供了一个复制数组的 native(本地)方法。
函数原型如下,位于 java.lang.System类当中:
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length);
那我就想了,这么简单的一个操作,究竟是自己去实现呢,还是调用 Java 自带的本地方法呢?
既然有了这样的选择,那当然是效率底下见真章了。
测试代码
基于 JDK1.8,分两次测试,第一次测试了数组长度为 100,1000 和 10000 三种情况,第二次测试了 50,100,1000,10000 四种情况,计时单位为纳秒(毫秒级上没差,所以有时也不用太过纠结)。
public class Test {
public static void main(String[] argus){
//JDK 1.8
int[] a50 = new int[50];
int[] a100 = new int[100];
int[] a1000 = new int[1000];
int[] a10000 = new int[10000];
long t1,t2,t3;
//长度为50时的效率对比
// int[] b50 = new int[50];