java复制类mytool,JAVA Beans复制Utils比较
1.apache BeanUtils 性能太差 日志太多
2.Apache PropertyUtils 性能可以参考,但是数据量大了比起Cglib 还是慢很多
3.Spring BeanUtils 上了一定的数量级别比较慢
4.Cglib BeanCopier 目前看来比较稳定
5.com.rits.cloning ,数量级别大了 也慢
package com.helloxin.restful.api;
import com.helloxin.restful.api.bo.CarBO;
import com.rits.cloning.Cloner;
import lombok.extern.slf4j.Slf4j;
import net.sf.cglib.beans.BeanCopier;
import org.apache.commons.beanutils.PropertyUtils;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@Slf4j
public class BeanCopyTest {
final static public Integer NUM = 10000;
@Test
public void beanSpringCopyTest() {
List list = createData(NUM);
long start = System.currentTimeMillis();
for(int i = 0;i< NUM;i++){
CarBO newCar = new CarBO();
BeanUtils.copyProperties(list.get(i), newCar);
}
log.info("duration={}", System.currentTimeMillis() - start);
}
@Test
public void beanCglibCopyTest() {
List list = createData(NUM);
long start = System.currentTimeMillis();
BeanCopier b = BeanCopier.create(CarBO.class, CarBO.class, false);
for(int i = 0;i< NUM;i++){
CarBO newCar = new CarBO();
b.copy(list.get(i), newCar, null);
}
log.info("duration={}", System.currentTimeMillis() - start);
}
@Test
public void beanApacheCopyTest() throws InvocationTargetException, IllegalAccessException {
List list = createData(NUM);
long start = System.currentTimeMillis();
BeanCopier b = BeanCopier.create(CarBO.class, CarBO.class, false);
for(int i = 0;i< NUM;i++){
CarBO newCar = new CarBO();
org.apache.commons.beanutils.BeanUtils.copyProperties(newCar,list.get(i));
}
log.info("duration={}", System.currentTimeMillis() - start);
}
@Test
public void beanApachePropertyUtilsCopyTest() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {
List list = createData(NUM);
long start = System.currentTimeMillis();
BeanCopier b = BeanCopier.create(CarBO.class, CarBO.class, false);
for(int i = 0;i< NUM;i++){
CarBO newCar = new CarBO();
PropertyUtils.copyProperties(newCar,list.get(i));
}
log.info("duration={}", System.currentTimeMillis() - start);
}
@Test
public void beanRitsCloningTest() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {
List list = createData(NUM);
long start = System.currentTimeMillis();
Cloner cloner = new Cloner();
for(int i = 0;i< NUM;i++){
cloner.deepClone(list.get(i));
}
log.info("duration={}", System.currentTimeMillis() - start);
}
private CarBO createData() {
return CarBO.builder().make("st").numberOfSeats(12).build();
}
private List createData(int num) {
return IntStream.range(0, num).mapToObj(i -> CarBO.builder().make("st").numberOfSeats(i).build()).collect(Collectors.toList());
}
}
java复制类mytool,JAVA Beans复制Utils比较相关推荐
- 使用maven根据JSON文件自动生成Java POJO类(Java Bean)源文件
根据JSON文件自动生成Java POJO类(Java Bean)源文件 本文介绍使用程序jsonschema2pojo来自动生成Java的POJO类源文件,本文主要使用maven,其他构建工具请参考 ...
- pojo java,什么是java pojo类,java bean,普通类?
Hi please dont say my question is duplicate :-) i saw all questions but didnt understand exact diffe ...
- java scanner类 构造器,Java Scanner类
本文概述 Java的Scanner类可在java.util包中找到. Java提供了多种从键盘读取输入的方法, java.util.Scanner类就是其中之一. Java Scanner类使用默认为 ...
- JAVA工具类(17)--Java导入导出Excel工具类ExcelUtil
实战 导出就是将List转化为Excel(listToExcel) 导入就是将Excel转化为List(excelToList) 导入导出中会出现各种各样的问题,比如:数据源为空.有重复行等,我自定义 ...
- 常用Java工具类:java抽奖码生成
本案要求生成10W条由大写字母加数字组成的抽奖码. 由要求得字符集为:ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 为保证数据不重复,且不可破解的要求.阿咚使用5位的随机字 ...
- java jdbctype_JdbcType类型和Java类型的对应关系
在Oracle中有些字段不是必填时在用户使用的时候会出现数据null的情况.这个时候在Oracle中是无法进行插入的. JDBC Type Java Type CHAR String VARCHAR ...
- java calculator类_Calculator.java
package bdqn; import java.util.Scanner; public class Calculator { /* * 定义一个计算器类,包括加.减.乘.除运算. */ int ...
- java 普通类request_[Java教程]spring在普通类中获取session和request
[Java教程]spring在普通类中获取session和request 0 2014-08-12 08:01:13 在使用spring时,经常需要在普通类中获取session,request等对像. ...
- java 比较器类_高级编程之(Java常用类(Java比较器))
1.使用背景: 说明:Java中的对象,正常情况下,只能进行比较 == 或 !=.不能使用 > 或 < 但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小. 如何 ...
- java servlet类_[Java教程]与Servlet相关的类
[Java教程]与Servlet相关的类 0 2017-08-31 17:00:15 有4个有关的类,通过servlet可以获得其中的三个,然后通过ServletConfig间接获取ServletCo ...
最新文章
- 利用SQL语句查找某数据库中所有存储过程包含的内容
- C#中读写Xml配置文件常用方法工具类
- 网银无法登录解决办法
- 《Starting with Starling》 Ep 1~11
- 数据库设计(一对一、一对多、多对多)
- drop sqlite 多个表_SQLite简介与安装
- 51单片机1602、18B20电子钟--C51源代码
- 解读30个提高Web程序执行效率的好经验
- 漫画:什么是字符集和编码?ASCII、UTF-8、UTF-16、UTF-32 又是什么?
- 几种方法帮你更有效率的记笔记
- 自动泊车停车位检测算法
- 红细胞识别matlab,图像处理—红细胞计数(Matlab).doc
- Android科大讯飞语音合成
- PCISPH的通俗解释与简单实现
- 大数据时代下的网络安全与数据隐私论文
- 运用awk提取日志文件中的IP地址
- Linux系统编程——Daemon进程
- TinyXML-2解析XML数据
- 微信小程序的key值
- the jar file has no source attachment解决方法
热门文章
- oracle转类型sql,[转]SQL Server 和Oracle 数据类型对应
- golang ide 环境搭建_新手引导 — Golang后端开发环境搭建
- 单元覆盖测试排除某些类烧苗_汽车嵌入式软件测试——嵌入式软件测试概述
- java 比较器_java比较器简略叙述
- C++头文件的若干说明和const对象定义
- 一种排序NYOJ 8
- android 隐藏系统音量的接口_Android9.0 系统默认配置清单
- python @符号_注意!大佬提醒你python初学者这几个很难绕过的坑,附教程资料
- 【UVA10129】Play on Words(欧拉回路+有向图连通性判断+打印欧拉道路)
- badboy html5,html5_ol.htm