对象属性复制几种方式的效率

对象属性复制的三种方法:

1.Apache提供的BeanUtil.copyProperties和PropertyUtil.copyProperties两种方式

  BeanUtils.copyProperties("转换后的类", "要转换的类"); //多一步类型转换,比PropertyUtils效率还差

  PropertyUtils.copyProperties("转换后的类", "要转换的类");

  口诀:后付钱(后付前:后面的复制给前面)会抛异常

2.spring提供的BeanUtil.copyProperties方式

  BeanUtils.copyProperties("要转换的类", "转换后的类"); 

  和Apache参数顺序相反

3.cglib提供的copy方式

  BeanCopier copy=BeanCopier.create("要转换的类", "转换后的类", false);

  copy.copy(from, to, null);

4.spring提供的copy方式

  BeanCopier copy=BeanCopier.create("要转换的类", "转换后的类", false);

  copy.copy(from, to, null);

1 /**
2  * Created by hunt on 2022/9/16.
3  */
4 @Data
5 public class TestFrom {
6     private String name;
7 }
1 import lombok.Data;
2 
3 /**
4  * Created by hunt on 2022/9/16.
5  */
6 @Data
7 public class TestTo {
8     private String name;
9 }

Apache方式的BeanUtils效率测试代码:

 1 import org.apache.commons.beanutils.BeanUtils;
 2 
 3 import java.lang.reflect.InvocationTargetException;
 4 
 5 /**
 6  * Created by hunt on 2022/9/16.
 7  */
 8 public class TestDemo {
 9     public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {
10         TestFrom testFrom = new TestFrom();
11         testFrom.setName("hunt");
12         TestTo testTo = new TestTo();
13         long begin = System.currentTimeMillis();
14         for (int i = 0; i <1000000 ; i++) {//一百万次
15             BeanUtils.copyProperties(testTo,testFrom);
16         }
17         long end = System.currentTimeMillis();
18         long mis = end -begin;
19         System.out.println("apache的BeanUtils.copyProperties耗时" + mis +"毫秒");
20         System.out.println(testTo);
21     }
22 }

第一种Apache方式的BeanUtils和PropertyUtils效率测试为76467毫秒和2473毫秒

第二种Spring方式的BeanUtils效率测试为1120毫秒

第三种方式cglib的copy效率测试为505毫秒

第四种方式Spring的copy效率测试为390毫秒

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值