脚本宝典收集整理的这篇文章主要介绍了Java Bean Copy 性能大比拼,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
Java Bean Copy 性能大比拼
简介
Bean 拷贝在工作中被大量使用,可以大幅度的提高工作量。本文对常用的 Bean copy 工具进行了压力测试,方便大家选择更加适合自己的工具。本篇文章是mica cglib 增强——【01】cglib bean copy 介绍 续篇,该专栏会持续更新,感兴趣的朋友请订阅我们。
bean 拷贝工具
- MapStruct (编译期生成 Mapper 实现)
- Selma (编译期生成 Mapper 实现)
- yangtu222 - BeanUtils (第一次生成 copy 实现字节码)
- mica (第一次生成 copy 实现字节码)
- hutool (反射)
模型
无类型转换
/** * 来源用户 * * @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 压测结果
环境
简单模型
benchmark Mode Cnt Score Error Units hutoolBeanCopy thrpt 5 1939.092 ± 26.747 ops/ms springBeanCopy thrpt 5 3569.035 ± 39.607 ops/ms cglibBeanCopy thrpt 5 9112.785 ± 560.503 ops/ms micaBeanCopy thrpt 5 17753.409 ± 393.245 ops/ms yangtu222BeanCopy thrpt 5 18201.997 ± 119.189 ops/ms cglibMapPErBeanCopy thrpt 5 37679.510 ± 3544.624 ops/ms mapStructBeanCopy thrpt 5 50328.045 ± 529.707 ops/ms selmaBeanCopy thrpt 5 200859.561 ± 2370.531 ops/ms
附带类型转换(日期)
Benchmark Mode Cnt Score Error Units micaBeanCopy thrpt 5 1186.375 ± 64.686 ops/ms mapStructBeanCopy thrpt 5 1623.478 ± 13.894 ops/ms selmaBeanCopy thrpt 5 160020.595 ± 2570.747 ops/ms
列表模型(100 item)
Benchmark Mode Cnt Score Error Units springBeanCopy thrpt 5 35.974 ± 0.555 ops/ms micaBeanCopy thrpt 5 169.066 ± 5.460 ops/ms
Map 拷贝到 bean
Benchmark Mode Cnt Score Error Units hutoolBeanCopy thrpt 5 1338.551 ± 16.746 ops/ms micaBeanCopy thrpt 5 13577.056 ± 27.795 ops/ms
结论
和 java-object-mapper-benchmark 测试结果有些出入。
Selma 的表现反而比 MapStruct 更好,可能是模型不一样导致的。
功能比较
工具包 需要编写Mapper 支持Map 支持List、Set 类型转换 性能 Selma 是 否 否 需要手写转换 极高 MapStruct 是 否 否 支持常用类型和复杂表达式 极高 BeanUtils(yangtu222) 否 否 是 需要手写转换 极高 mica 否 是 是 是用 Spring 的类型转换 极高 Spring 否 否 否 不支持 高 hutool 否 是 否 不支持 高
链接
本项目源码:https://github.com/lets-mica/mica-jmh
开源推荐
- Spring boot 微服务高效开发
mica
工具集:https://gitee.com/596392912/mica -
Avue
一款基于vue可配置化的神奇框架:https://gitee.com/smallweigit/avue -
pig
宇宙最强微服务(架构师必备):https://gitee.com/log4j/pig -
SpringBlade
完整的线上解决方案(企业开发必备):https://gitee.com/smallc/SpringBlade -
IJPay
支付SDK让支付触手可及:https://gitee.com/javen205/IJPay
@H_512_661@关注我们
扫描上面二维码,更多精彩内容每天推荐!
以上是脚本宝典为你收集整理的Java Bean Copy 性能大比拼全部内容,希望文章能够帮你解决Java Bean Copy 性能大比拼所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。