公司系统中之前一直有使用组件进行Bean copy的操作,只是知道此操作对性能有影响,但是到底有多少影响心里一直没有数。现在对Bean copy进行测试获取量化的结果
目前Bean Copy的主流组件:
-
Apache BeanUtils
-
Spring BeanUtils
-
Cglib BeanCopier
众所周知Apache BeanUtils性能太差,一般不推荐使用。这里不对其进行测试,只测试后面两个组件
测试环境:
- JAVA8
- Spring Boot 2.1.4.RELEASE
- 本地普通台式机
测试代码:
测试功能:循环N次,将TelAppModel 对象中的属性复制到TelAppDto中,统计每种组件花费的时间,花费时间越少的性能越强。
测试POJO类
源类 TelAppModel.java 和目标类 TelAppDto.java,两个类都是简单的pojo类且成员变量相同。
普通的Java set/get方法实现Bean Copy, 代码如下:
public static void copySetGet(TelAppModel source, TelAppDto target){
target.setId(source.getId());
target.setTelPowerSavingMode((byte)0);
target.setTelSecret(source.getTelSecret());
tar