package edu.wtbu;标签:分析,getName,System,long,对比,start,user,currentTimeMillis,性能 From: https://www.cnblogs.com/123456dh/p/17258660.html
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
//分析性能问题
public class Demo01 {
public static void main(String[] args) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException {
Demo01 demo01 = new Demo01();
demo01.text1();
demo01.text2();
demo01.text3();
}
//普通方法调用
public void text1(){
User user = new User();
long start = System.currentTimeMillis();
for (int i = 0; i <1000000000 ; i++) {
user.getName();
}
long end = System.currentTimeMillis();
System.out.println("执行时间"+(end-start)+"ms");
}
//反射方法调用
public void text2() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
User user = new User();
Class<? extends User> c1 = user.getClass();
Method getName = c1.getDeclaredMethod("getName",null);
long start = System.currentTimeMillis();
for (int i = 0; i <1000000000 ; i++) {
getName.invoke(user,null);
}
long end = System.currentTimeMillis();
System.out.println("执行时间"+(end-start)+"ms");
}
//反射方法调用 关闭检测
public void text3() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {
User user = new User();
Class<? extends User> c1 = user.getClass();
Method getName = c1.getDeclaredMethod("getName",null);
getName.setAccessible(true);
long start = System.currentTimeMillis();
for (int i = 0; i <1000000000 ; i++) {
getName.invoke(user,null);
}
long end = System.currentTimeMillis();
System.out.println("执行时间"+(end-start)+"ms");
}
}