资讯专栏INFORMATION COLUMN

Java Bean Copy 性能大比拼

lentoo / 3326人阅读

摘要:性能大比拼简介拷贝在工作中被大量使用,可以大幅度的提高工作量。本文对常用的工具进行了压力测试,方便大家选择更加适合自己的工具。本篇文章是增强介绍续篇,该专栏会持续更新,感兴趣的朋友请订阅我们。的表现反而比更好,可能是模型不一样导致的。

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 压测结果

环境

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

开源推荐

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

关注我们

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73982.html

相关文章

  • 2017年前端框架、类库、工具大比

    摘要:相比于开发人员的数量,目前框架类库和工具的数量似乎更多一些。本文将会讨论目前最为流行的客户端框架类库和工具以及它们之间的基本差异。典型的类库包括字符串处理日期元素事件动画网络请求等功能。所以不需要明确的区分类库框架和工具。 相比于JavaScript开发人员的数量,目前JavaScript框架、类库和工具的数量似乎更多一些。截至2017年5月,GitHub上的快速搜索显示,有超过110...

    Alliot 评论0 收藏0
  • 前端技术能力大比(第五期)

    摘要:活动奖励本次活动计划评出前三名,均为葡萄城定制奖品第一名葡萄城定制马克杯第二名葡萄城定制魔方第三名葡萄城定制笔记本中性笔 参赛条件 不限人群,只要加入前端技术交流群(720389894),都可进行在线答题showImg(https://segmentfault.com/img/bVbqcUi?w=798&h=300); 活动流程 1、 在线答题:详情见下方活动方式2、 题目...

    zhangke3016 评论0 收藏0
  • 前端技术能力大比(第五期)

    摘要:活动奖励本次活动计划评出前三名,均为葡萄城定制奖品第一名葡萄城定制马克杯第二名葡萄城定制魔方第三名葡萄城定制笔记本中性笔 参赛条件 不限人群,只要加入前端技术交流群(720389894),都可进行在线答题showImg(https://segmentfault.com/img/bVbqcUi?w=798&h=300); 活动流程 1、 在线答题:详情见下方活动方式2、 题目...

    jerryloveemily 评论0 收藏0
  • 云计算CRM大比 七大巨头你选谁

    摘要:微软产品管理事业部总经理表示,这项优惠服务将持续到年月日。表示,目前,其价格是每个月每个用户美元。青睐云计算吗这家企业应用软件领域的巨头进入这个市场也许有点晚了,但除了参与其中别无选择,但是表现似乎还不错。        Salesforce.com、甲骨文、微软、SAP及另外众多厂商在提供云CRM(客户关系管理)服务。围绕云计算的炒作无所不在,想必大家都听到过云计算。弗雷斯特调研公司预测,...

    zsirfs 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<