java拷贝对象属性的几种方式对比

常用的对象属性的拷贝方式有很多,就随便说几个:

spring 的 BeanUtils.copyproperties()  原理:反射

apache的 BeanUtils.copyproperties()

String的 BeanUtils.copyproperties()

PropertyUtils.copyproperties()

BeanCopier.create()原理:cglib 利用字节码技术

但是上面几个中,我测试了spring的 BeanUtils.copyproperties() 发现的确很慢,BeanCopier.create()的最快,及什么都不用原始的setXXX重新赋值的3种情况。

测试环境:

测试工具: jmeter

线程数:10

并发时间:1秒内启动10个线程

结束时间:1分钟

 第一种:原始的setXXX,主要看Average平均时间

 第二种:spring的BeanUtils.copyproperties

第三种:cglib-BeanCopier.create(), 高版本的spring中已经封装了,拿来用就行了

 BeanCopier.create()的使用方式: 

BeanCopier copier = BeanCopier.create(AddessResolverDto.class, RespFullDcDto.class, false);
copier.copy(bullSortingDto, respFullDcDto,null);

 总结:

可以看出采用cglib的效率最高

 

你可能感兴趣的:(开发过程遇到的问题)