Java Bean Copy 性能大比拼

发布时间:2019-11-19 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Java Bean Copy 性能大比拼脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

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 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

开源推荐

@H_512_661@关注我们

Java Bean Copy 性能大比拼

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

脚本宝典总结

以上是脚本宝典为你收集整理的Java Bean Copy 性能大比拼全部内容,希望文章能够帮你解决Java Bean Copy 性能大比拼所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。