BeanUtils和JSON对象复制性能对比

对比对象

常见的BeanUtils有2个:
spring有BeanUtils 浅拷贝
apache的commons也有BeanUtils 深拷贝

测试(200000次循环)

测试次数
200000次循环

测试结果
在这里插入图片描述
依旧是20倍左右的差距, 循环200000次但新建对象不是预期的200000而总是少10个左右…

结论

使用 BeanUtils 自动复制字段, 性能大概是 json序列化 方式复制字段的20倍, 不过如果对象不是十分复杂, 这个差距可以接受,性能不敏感的话可以考虑使用 json序列化 的方式进行字段复制

spring BeanUtils和Apache BeanUtils优缺点

spring BeanUtils只能进行浅复制, 不能复制子对象, 但性能高.
Apache BeanUtils可以深层次复制, 但性能较低.

深度克隆注意

1、BeanUtils的copyProperties()方法并不是完全的深度克隆,在包含有引用类型的对象拷贝上就可能会出现引用对象指向同一个的情况,且该方法的性能低下,项目中一定要谨慎使用。
2、要实现高性能且安全的深度克隆方法还是实现Serializable接口,多层克隆时,引用类型均要实现Serializable接口(多层克隆不仅要将克隆对象实现序列化接口,引用对象也同样的要实现序列化接口)。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值