java beanutils 性能_Java Bean Copy 性能大比拼

Bean 拷贝在工作中被大量使用,可以大幅度的减少工作量。本文对常用的 Bean copy 工具进行了压力测试,方便大家选择更加适合自己的工具。本篇文章是 mica cglib 增强——【01】cglib bean copy 介绍

续篇,该专栏会持续更新,感兴趣的朋友请订阅我们。

bean 拷贝工具

模型

无类型转换

/**

* 来源用户

*

* @author L.cm

*/

@Data

public class FormUser {

private Long id;

private String nickName;

private Integer age;

private String phone;

private String email;

private String password;

private Integer gender;

private String avatar;

}

/**

* 转换的用户

*

* @author L.cm

*/

@Data

public class ToUser {

private String nickName;

private String phone;

private String email;

private Integer gender;

private String avatar;

}

复制代码

带类型转换

/**

* 附带类型转换的 用户模型

*

* @author L.cm

*/

@Data

@Accessors(chain = true)

public class FormConvertUser {

private Long id;

private String nickName;

private Integer age;

private String phone;

private String email;

private String password;

private Integer gender;

private String avatar;

@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)

private LocalDateTime birthday;

}

/**

* 附带类型转换的 用户模型

*

* @author L.cm

*/

@Data

@Accessors(chain = true)

public class ToConvertUser {

private String nickName;

private Integer age;

private String phone;

private String email;

private String password;

private Integer gender;

private String avatar;

private String birthday;

}

复制代码

Bean copy 压测结果

环境

OS: macOS Mojave

CPU: 2.8 GHz Intel Core i5

RAM: 8 GB 1600 MHz DDR3

JVM: Oracle 1.8.0_201 64 bits

简单模型

Benchmark

Score

Error

Units

hutool

1939.092

26.747

ops/ms

spring

3569.035

39.607

ops/ms

cglib

9112.785

560.503

ops/ms

mica

17753.409

393.245

ops/ms

yangtu222

18201.997

119.189

ops/ms

cglibMapper

37679.510

3544.624

ops/ms

mapStruct

50328.045

529.707

ops/ms

selma

200859.561

2370.531

ops/ms

附带类型转换(日期)

Benchmark

Score

Error

Units

mica

1186.375

64.686

ops/ms

mapStruct

1623.478

13.894

ops/ms

selma

160020.595

2570.747

ops/ms

列表模型(100 item)

Benchmark

Score

Error

Units

spring

35.974

0.555

ops/ms

mica

169.066

5.460

ops/ms

Map 拷贝到 bean

Benchmark

Score

Error

Units

hutool

1338.551

16.746

ops/ms

mica

13577.056

27.795

ops/ms

结论

Selma 的表现反而比 MapStruct 更好,可能是模型不一样导致的。

功能比较

工具包

需要编写Mapper

支持Map

支持List、Set

类型转换

性能

Selma

需要手写转换

极高

MapStruct

支持常用类型和复杂表达式

极高

BeanUtils(yangtu222)

需要手写转换

极高

mica

是用 Spring 的类型转换

极高

Spring

不支持

hutool

不支持

链接

开源推荐

Spring boot 微服务高效开发  mica

工具集: gitee.com/596392912/m…

pig

宇宙最强微服务(架构师必备):gitee.com/log4j/pig

SpringBlade

完整的线上解决方案(企业开发必备): gitee.com/smallc/Spri…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值