java反射的效率有多高
现在开源框架,为了减少代码耦合度,一般用反射的方法来实现对类方法的查找等。但反射的效率究竟比直接取数据有多大差别。今天,做了个小实验。还请各位高手多多指教。直接来代码:
基本类:
- package test;
- import java.util.ArrayList;
- import java.util.List;
- public class A {
- private int a ;
- private String b;
- private List c;
- public A(){
- this.a = 10;
- this.b = "abcde";
- c = new ArrayList();
- c.add("aaa");
- c.add("bbb");
- }
- public int getA() {
- return a++;
- }
- public void setA(int a) {
- this.a = a;
- }
- public String getB() {
- return b;
- }
- public void setB(String b) {
- this.b = b;
- }
- public List getC() {
- return c;
- }
- public void setC(List c) {
- this.c = c;
- }
- }
测试类:(引入beanUtil类)
- package test;
- import java.lang.reflect.InvocationTargetException;
- import org.apache.commons.beanutils.BeanUtils;
- public class testReflect {
- public static void main(String[] args){
- testReflect tr = new testReflect();
- tr.CommonTest();
- tr.ReflectTest();
- }
- public static void CommonTest(){
- A a = new A();
- long timeBegin = System.nanoTime();
- for(int i =0 ;i<100000;i++){
- a.getA();
- }
- long timeEnd = System.nanoTime();
- System.out.println((timeEnd - timeBegin)/1000
- );
- }
- public static void ReflectTest(){
- try {
- long timeBegin = System.nanoTime();
- for(int i =0 ;i<100000;i++){
- BeanUtils.getSimpleProperty(new A(), "a");
- }
- long timeEnd = System.nanoTime();
- System.out.println((timeEnd - timeBegin)/1000
- );
- } catch (IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (NoSuchMethodException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
一比吓了一跳,效率大概是一百倍左右。怕是由于try块的开销大,本人又把27行注释掉。结论是影响效率的主要是
27行。看来,反射耗资源的说法还真不假。
转载于:https://blog.51cto.com/liubo/600257
java反射的效率有多高相关推荐
- java 反射的效率_如何提高使用Java反射的效率?
前言 在我们平时的工作或者面试中,都会经常遇到"反射"这个知识点,通过"反射"我们可以动态的获取到对象的信息以及灵活的调用对象方法等,但是在使用的同时又伴随着另 ...
- 反射创建对象_面试题汇集——java反射
反射是动态获取信息以及动态调用对象的方法,在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法:并且对于任意一个对象,都能够调用它的任意一个方法. 1.除了使用new创建对象之外,还可以用 ...
- Java反射高频面试题(附答案)
1.除了使用new创建对象之外,还可以用什么方法创建对象? 使用Java反射可以创建对象! 2.Java反射创建对象效率高还是通过new创建对象的效率高? 通过new创建对象的效率比较高.通过反射时, ...
- 大家都说 Java 反射效率低,为什么呢?
我们在 Java 开发中,难免会接触到反射,而在一些框架中,反射的运用更是常见.我相信,每次提到反射,大家的第一反应一定是反射效率低,尽量少使用.但是反射的效率到底低多少?反射效率低的原因在哪里?这篇 ...
- 大家都说 Java 反射效率低,你知道原因在哪里么
[这是 ZY 第 17 篇原创技术文章] 预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低的原因 文章概览 我们在 Java 开发中, ...
- dwr java有返回值但是js获取不到返回值_一探究竟:Java反射效率低的原因到底在哪?...
预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低的原因 文章概览 我们在 Java 开发中,难免会接触到反射,而在一些框架中,反射的运 ...
- java 删除zip文件_Java--字节缓冲流的效率有多高?测试一下
Java--字节缓冲流的效率有多高?测试一下 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 说缓冲流的效率特别高,那么今 ...
- java反射效率问题_Java反射到底慢在哪?
原标题:Java反射到底慢在哪? 来自:简书,作者:张明云 链接:https://www.jianshu.com/p/4e2b49fa8ba1 反射具体是怎么影响性能的?这引起了我的反思.是啊,在阐述 ...
- java 反射效率分析
前言 都说Java反射效率慢,个人也只是听说而已,到底慢在哪里? 又有多么慢? 今天就来分析下,此片博客与诸君共享,也当记录下自己的成果. 反射demo 设计 代码 new 和 class.newIn ...
最新文章
- c++Insertion Sort插入排序的实现算法(附完整源码)
- 大数据平台蓝图_数据科学面试蓝图
- java socket编程实现聊天程序_java Socket编程 聊天程序 服务器端和客户端
- WPF效果第一百七十八篇ItemsControl旋转
- Nginx基本数据结构之ngx_array_t
- socket 例子 java_java socket例子
- 超级弱口令检查工具使用简介
- 标签打印软件如何输出双面打印的文档
- 前端web设计师_Web设计师的时尚Web设计主题
- Every plan I should insist on !!
- oracle查询导致 gc等待,RAC等待事件:gc buffer busy acquire
- (10.1.6)极简主义
- Excel如何制作下拉列表
- sql server使用杂记(二)
- 这篇文章教给你图片怎么去雾的几个方法
- java中byte和short类型的相互转换(不是用隐式转换)
- vscode 最详细的调试
- Vue移动端开发IOS浏览器回退时页面不刷新或未正常发起请求
- 华为手环6鸿蒙,智能手环盘点:华为手环6比小米手环6贵在哪?
- CRectTracker(橡皮筋)类的使用
热门文章
- 看看 Grunt 的源码(一):grunt-cli 源码解析
- [关于SQL]查询成绩都大于80分的学生
- mssql,mysql,oracle中查询数据库表的比较
- 启动Tomcat报的各种菜鸟错误
- Citrix Xendesktop中VDA注册DDC的流程
- android 焦点的作用,Android中的视图焦点Focus的详细介绍
- orcle 删除表报正在使用_删除文件时提示正在使用无法删除?这款免费软件帮你快速解决问题...
- 云计算技术 — 混合云
- Windows 08R2_AD图文详解
- 180W多路输出式单片精密开关电源电路及分析