通过普通方式调用和反射方式调用以及关闭检测后,通过反射方式调用的性能对比

简介: 通过普通方式调用和反射方式调用以及关闭检测后,通过反射方式调用的性能对比

测试代码如下:

package Collections;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class text3 {
    //普通方式调用
    public static void text1() {
        person user = new person();
        long startTime = System.currentTimeMillis();
        for (int i = 0; i < 1000000000; i++) {
            user.getName();
        }
        long endTime = System.currentTimeMillis();
        System.out.println("普通方式执行10亿次;" + (endTime - startTime) + "ms");
    }
    //通过反射的方式调用
    public static void text2() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        person user = new person();
        Class c = user.getClass();
        Method getName = c.getDeclaredMethod("getName", null);
        long startTime = System.currentTimeMillis();
        for (int i = 0; i < 1000000000; i++) {
            getName.invoke("person", null);
        }
        long endTime = System.currentTimeMillis();
        System.out.println("反射方式执行10亿次;" + (endTime - startTime) + "ms");
    }
    //关闭检测后,通过反射的方式调用
    public static void text3() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        person user = new person();
        Class c = user.getClass();
        Method getName = c.getDeclaredMethod("getName", null);
        getName.setAccessible(true);
        long startTime = System.currentTimeMillis();
        for (int i = 0; i < 1000000000; i++) {
            getName.invoke("person", null);
        }
        long endTime = System.currentTimeMillis();
        System.out.println("关闭检测后,执行10亿次;" + (endTime - startTime) + "ms");
    }
    public static void main(String[] args) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException {
        text1();
        text2();
        text3();
    }
}

输出:

普通方式执行10亿次;4ms
反射方式执行10亿次;6576ms
关闭检测后,执行10亿次;5577ms
相关文章
|
Java
Java反射机制动态操作
Java反射机制动态操作
54 0
|
6月前
|
Java
【专栏】Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性
【4月更文挑战第27天】本文探讨了Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性。反射通过Class、Constructor、Method和Field类实现。文中列举了反射的应用场景,如动态创建对象、调用方法、访问属性和处理注解,并提供了相关实例代码演示。
78 4
|
3月前
|
缓存 前端开发 Java
反射加缓存,解决不同的业务下调用不同的实现
反射加缓存,解决不同的业务下调用不同的实现
34 0
|
Java API Spring
反射:替对象执行方法
反射:替对象执行方法
反射:替对象执行方法
|
程序员 Scala 开发者
函数(方法)的调用机制|学习笔记
快速学习函数(方法)的调用机制。
函数(方法)的调用机制|学习笔记
|
Java
CheerpJ调用的两种方式
CheerpJ调用的两种方式
248 0
|
Oracle Java 关系型数据库
反射使用的步骤
反射使用的步骤
136 0
|
Java 开发者
反射调用普通方法|学习笔记
快速学习反射调用普通方法
121 0
反射调用普通方法|学习笔记
|
C# 索引
C#反射与特性(八):反射操作的示例大全
C#反射与特性(八):反射操作的示例大全
346 0
(十八) 反射的原理是什么,反射创建类实例的三种方式是什么?
javac在这一阶段会把java代码编译为class文件,保存在硬盘中,这个文件中保存着这个类的类名、成员名、构造方法、其他方法等。
下一篇
无影云桌面