用for循环对int数组的赋值和用System.arraycopy()对int数组赋值的速度比较

结论:还是用for循环吧。

/*
 * 测试输入赋相同值的速度:
 * 问题来源:xx算法每次都要对两个 length=802 的数组赋值,也就是没求一条最短路径就要赋值一次,也就是大概赋值300*40=12000次
 * 结论:还是用for循环做吧
 * output:
 * 用for循环做的赋值时间是:39
用System.Arraycopy()循环做的赋值时间是:64*/
public class SpreadArrayInst {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int iter=12000;
        int len=802;
        int[] Dis=new int[len];a
        int[] Path=new int[len];        
        for(int i=0;i<len;i++)
        {
            //System.out.print(Dis[i]+"  ");//也就是int型数组全部赋初值为0
            Dis[i]=i+1;
            Path[i]=len-i;
        }

        //用for循环实现
        long times1=System.currentTimeMillis();
        for(int i=0;i<iter;i++)
        {
            for(int j=0;j<Dis.length;j++)
            {
                Dis[j]=-1;
                Path[j]=len;
            }
        }
        long timee1=System.currentTimeMillis();
        System.out.println("用for循环做的赋值时间是:"+(timee1-times1));

        //用System.Arraycopy()实现
        long times2=System.currentTimeMillis();
        for(int i=0;i<iter;i++)
        {
            int[] sDis= new int[Dis.length];
            int[] sPath= new int[Path.length];
            System.arraycopy(Dis, 0, sDis, 0, sDis.length);//最后应该是长度,而不是结束位置
            System.arraycopy(Path, 0, sPath, 0, sPath.length);
        }
        long timee2=System.currentTimeMillis();
        System.out.println("用System.Arraycopy()循环做的赋值时间是:"+(timee2-times2));
        / * output:
 * 用for循环做的赋值时间是:39
用System.Arraycopy()循环做的赋值时间是:64*/


    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值