zoukankan      html  css  js  c++  java
  • 性能对比分析(普通方法/反射/反射关闭检测)

    性能对比分析(普通方法/反射/反射关闭检测)

    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    //分析性能问题
    public class Test10 {
    
        //普通方式调用
        public static void test01(){
            User user = new User();
    
            long startTime = System.currentTimeMillis();
    
            for (int i = 0; i < 1000000000; i++) {
                user.getName();
            }
    
            long endTime = System.currentTimeMillis();
    
            System.out.println("普通方法执行10亿次:"+(endTime-startTime)+"ms"); //3ms
        }
    
        //反射方式调用
        public static void test02() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
            User user = new User();
            Class c1 = user.getClass();
    
            Method getName = c1.getDeclaredMethod("getName", null);
    
            long startTime = System.currentTimeMillis();
    
            for (int i = 0; i < 1000000000; i++) {
                getName.invoke(user,null);
            }
    
            long endTime = System.currentTimeMillis();
    
            System.out.println("反射方法执行10亿次:"+(endTime-startTime)+"ms"); //3029ms
        }
    
        //反射方式调用   关闭检测
        public static void test03() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
            User user = new User();
            Class c1 = user.getClass();
    
            Method getName = c1.getDeclaredMethod("getName", null);
            getName.setAccessible(true);
    
            long startTime = System.currentTimeMillis();
    
            for (int i = 0; i < 1000000000; i++) {
                getName.invoke(user,null);
            }
    
            long endTime = System.currentTimeMillis();
    
            System.out.println("关闭检测执行10亿次:"+(endTime-startTime)+"ms"); //1389ms
        }
    
        public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
            test01();
            test02();
            test03();
        }
    
    }
    
  • 相关阅读:
    微人事项目-mybatis-持久层
    通过外键连接多个表
    springioc
    Redis 消息中间件 ServiceStack.Redis 轻量级
    深度数据对接 链接服务器 数据传输
    sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取
    sqlserver 索引优化 CPU占用过高 执行分析 服务器检查
    sql server 远程备份 bak 删除
    冒泡排序
    多线程 异步 beginInvoke EndInvoke 使用
  • 原文地址:https://www.cnblogs.com/helloxiaolu/p/13332765.html
Copyright © 2011-2022 走看看