前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >性能优化-测试for循环中的反射操作

性能优化-测试for循环中的反射操作

作者头像
cwl_java
发布2019-11-28 22:49:03
5870
发布2019-11-28 22:49:03
举报
文章被收录于专栏:cwl_Javacwl_Java

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42528266/article/details/103221368

代码示例
代码语言:javascript
复制
package com.cwl.po;

import org.springframework.beans.BeanUtils;

/**
 * @program: cwl-performance-optimization
 * @description: 测试for循环中的反射操作
 * @author: ChenWenLong
 * @create: 2019-11-22 14:00
 **/
public class TestForReflect extends Object{

    // 事实证明我们在日常开发中喜欢使用反射拷贝对象信息,以此起到节省代码量的操作
    // 但是在for循环中使用反射带来的巨大开销是远不如使用set方法一个个去设置值来的简单
    public static void main(String[] args) {
        System.out.println(testUseReflect());
        System.out.println(testNotUseReflect());
    }

    /**
     * 功能描述:
     * 〈测试不使用反射〉
     *
     * @params : []
     * @return : long
     * @author : cwl
     * @date : 2019/11/22 14:04
     */
    private static long testNotUseReflect() {
        long begin = System.currentTimeMillis();
        User user = new User(1,"陈文龙",18,"广东","1120","3845","测试");
        UserVO userVO;
        for(int i=0;i<10000;i++){
            userVO = new UserVO();
            userVO.setAdress(user.getAdress());
            userVO.setAge(user.getAge());
            userVO.setIDCard(user.getIDCard());
            userVO.setMsg(user.getMsg());
            userVO.setName(user.getName());
            userVO.setPhoneNumber(user.getPhoneNumber());
            userVO.setId(user.getId());
        }
        long end = System.currentTimeMillis();
        return end - begin;
    }

    /**
     * 功能描述:
     * 〈测试for循环中使用反射〉
     *
     * @params : []
     * @return : long
     * @author : cwl
     * @date : 2019/11/22 14:03
     */
    private static long testUseReflect() {
        long begin = System.currentTimeMillis();
        User user = new User(1,"陈文龙",18,"广东","1120","3845","测试");
        UserVO userVO= new UserVO();
        for(int i=0;i<10000;i++){
            BeanUtils.copyProperties(user,userVO);
        }
        long end = System.currentTimeMillis();
        return end - begin;
    }
}

class User{

    private long id;
    private String name;
    private int age;
    private String adress;
    private String phoneNumber;
    private String IDCard;
    private String msg;

    public User(long id, String name, int age, String adress, String phoneNumber, String IDCard, String msg) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.adress = adress;
        this.phoneNumber = phoneNumber;
        this.IDCard = IDCard;
        this.msg = msg;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getAdress() {
        return adress;
    }

    public void setAdress(String adress) {
        this.adress = adress;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getIDCard() {
        return IDCard;
    }

    public void setIDCard(String IDCard) {
        this.IDCard = IDCard;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

class UserVO{
    private long id;
    private String name;
    private int age;
    private String adress;
    private String phoneNumber;
    private String IDCard;
    private String msg;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAdress() {
        return adress;
    }

    public void setAdress(String adress) {
        this.adress = adress;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getIDCard() {
        return IDCard;
    }

    public void setIDCard(String IDCard) {
        this.IDCard = IDCard;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档