反射效率问题
来源:互联网 发布:laravel nginx rewrite 编辑:程序博客网 时间:2024/06/03 13:18
反射带来了编程的灵活性,但是他的执行效率相比于常规调用要低。(禁用安全检查可以稍微缓解)
所以最好是在必须得用反射的情况下再用反射。
以如下代码为例,通过两种方式调用某个方法1000000000L次
privatestaticvoid test1(){
User u=new User();
longstartTime=System.currentTimeMillis();
for(inti=0;i<1000000000L;i++)
u.getName();
longendTime=System.currentTimeMillis();
System.out.println("普通调用方式耗时:"+(endTime-startTime)+"ms");
}
privatestaticvoid test2()throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
User u=new User();
longstartTime=System.currentTimeMillis();
Class<? extends User>class1 =u.getClass();
Method declaredMethod =class1.getDeclaredMethod("getName",null);
declaredMethod.setAccessible(false);
for(inti=0;i<1000000000L;i++){
declaredMethod.invoke(u,null);
}
longendTime=System.currentTimeMillis();
System.out.println("反射调用方式(禁用安全检查)耗时:"+(endTime-startTime)+"ms");
}
privatestaticvoid test3()throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
User u=new User();
longstartTime=System.currentTimeMillis();
Class<? extends User>class1 =u.getClass();
Method declaredMethod =class1.getDeclaredMethod("getName",null);
for(inti=0;i<1000000000L;i++){
declaredMethod.invoke(u,null);
}
longendTime=System.currentTimeMillis();
System.out.println("反射调用方式耗时:"+(endTime-startTime)+"ms");
}
- 反射效率问题
- 效率问题,Linq查询/多线程/反射/装箱相关
- 学习笔记——JAVA反射<2>反射机制的效率问题和操作泛型
- 转载 java反射效率
- java反射效率
- 测试Java反射效率
- Java反射效率
- JAVA-提高反射效率
- 效率问题
- 效率问题
- 效率问题
- 效率问题
- 效率问题
- Java300StudyNote(1)-反射机制-提高反射效率
- 看看java的反射效率
- AIR+Starling 中的反射效率
- dynamic 与反射 效率比较
- Java如果提高反射效率
- android适配器Adapter
- hibernate报错:JoinColumn cannot be resolved to a type
- 适配器总结
- Android应用开发--MP3音乐播放器代…
- 汉诺塔游戏和物理仿真
- 反射效率问题
- android学习路线
- Android开发的经典入门教材和学习…
- 震动相关工具类
- linux 磁盘分区 挂载
- mybatis入门基础(七)----延迟加载
- Spring——@Autowired注解和启动自动扫描的三种方式
- C#静态构造函数,在继承中调用情况
- 【数据库】FaceDataset常用的人脸数据库