博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java Bean Copy 性能大比拼
阅读量:6881 次
发布时间:2019-06-27

本文共 2410 字,大约阅读时间需要 8 分钟。

简介

Bean 拷贝在工作中被大量使用,可以大幅度的减少工作量。本文对常用的 Bean copy 工具进行了压力测试,方便大家选择更加适合自己的工具。本篇文章是 续篇,该专栏会持续更新,感兴趣的朋友请订阅我们。

bean 拷贝工具

模型

无类型转换

/** * 来源用户 * * @author L.cm */@Datapublic 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 */@Datapublic 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 工具集:
  • Avue 一款基于vue可配置化的神奇框架:
  • pig 宇宙最强微服务(架构师必备):
  • SpringBlade 完整的线上解决方案(企业开发必备):
  • IJPay 支付SDK让支付触手可及:

关注我们

扫描上面二维码,更多精彩内容每天推荐!

转载于:https://juejin.im/post/5c9d5cd1e51d455788281089

你可能感兴趣的文章
凯文·凯利:虚拟现实将取代微信!
查看>>
北航联合哈佛,研制出吸盘式仿生机器人
查看>>
廖方宇:数据与计算是科技创新倍增器
查看>>
redis 集群搭建
查看>>
Creating a pop up TitleWindow using the PopUpButton control in Flex
查看>>
联嘉祥牵手8Manage 打造信息化采购管理平台
查看>>
AOP静态代理解析1-标签解析
查看>>
mysql双主配合keepalived可用简析
查看>>
ArcGIS读取dem格式数据
查看>>
通过网站不能跳转登录的案例来看IP白名单的设置
查看>>
解决:eclipse更新maven项目JRE被更改版本的问题
查看>>
Linux之关机重启命令
查看>>
证监会叫停VR等行业跨界定增,福兮祸兮?
查看>>
宅米网技术变迁——初创互联网公司的技术发展之路
查看>>
程序员界年度人口普查:6成以上开发者日工作超9小时,且从不运动
查看>>
hbase meta表数据存储
查看>>
JavaScript中局部变量与全局变量
查看>>
PHP中的函数声明与使用
查看>>
windows10/2016上使用docker
查看>>
Web案例一:生成验证码
查看>>