专栏名称: hryou0922
目录
相关文章推荐
普象工业设计小站  ·  腰靠这种东西,几十块和几百块差别有多大!? ·  19 小时前  
普象工业设计小站  ·  能当小煮锅的烧水壶,一个满足n个需求 ·  昨天  
普象工业设计小站  ·  冰川上的艺术!在浮冰上创作肖像画,随着创作的 ... ·  昨天  
普象工业设计小站  ·  全脸“毁容”,爆肥50斤,49岁好莱坞最狠影 ... ·  2 天前  
51好读  ›  专栏  ›  hryou0922

Java Bean Copy组件的性能比较

hryou0922  · 掘金  ·  · 2019-04-28 17:09

正文

阅读 5

Java Bean Copy组件的性能比较

公司系统中之前一直有使用组件进行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());
       target.setTelAppId(source.getTelAppId());
       target.setTelName(source.getTelName());
       target.setDesc(source.getDesc());
   }
复制代码

Spring BeanUtils实现Bean Copy 代码如下:

public static void copyPropertiesSpring(Object source, Object target){
    BeanUtils.copyProperties(source, target);
}
复制代码

Cglib BeanCopier实现Bean Copy 代码如下:

public static void copyPropertiesCglib(Object source, Object target){
    BeanCopier beanCopier = BeanCopier.create(source.getClass(), target.getClass(), false);
    beanCopier.copy(source, target, null);
}
复制代码

测试代码 : longCount:定义复制执行的次数

// 在执行Bean copy前 先初始化 longCount 个TelAppModel,做为测试素材

for(int i = 0; i < longCount; i++){
      appModelSourceList.add(createModel());
}
复制代码






请到「今天看啥」查看全文