美文网首页
怎么提升反射的效率

怎么提升反射的效率

作者: 展翅高飞鹏程万里 | 来源:发表于2021-05-23 21:55 被阅读0次
  1. 缓存重复用到的对象
Class clz = Class.forName("com.example.studynote.reflection.User");
while (i < 1000000) {
    i++;
    //方法1,直接实例化
    user = new User();
    //方法2,每次都通过反射获取class,然后实例化
    user = (User) Class.forName("com.example.studynote.reflection.User").newInstance();
    //方法3,通过之前反射得到的class进行实例化
    user = (User) clz.newInstance();
}

得到的实际结果就是:方法一 > 方法三 > 方法二
  1. setAccessible(true)

之前我们说过当遇到私有变量和方法的时候,会用到setAccessible(true)方法关闭安全检查。这个安全检查其实也是耗时的。所以我们在反射的过程中可以尽量调用setAccessible(true)来关闭安全检查,无论是否是私有的,这样也能提高反射的效率。

  1. ReflectASM

他的原理是通过ASM库,生成了一个新的类,然后相当于直接调用新的类方法,从而完成反射的功能。

感兴趣的可以去看看源码,实现原理比较简单——
https://github.com/EsotericSoftware/reflectasm

小总结:经过上述三种方法,我想反射也不会那么可怕到大大影响性能的程度了,如果真的发现反射影响了性能以及实际使用的情况,也许可以研究下,是否是因为没用对反射和没有处理好反射相关的缓存呢?

相关文章

  • 怎么提升反射的效率

    缓存重复用到的对象 setAccessible(true) 之前我们说过当遇到私有变量和方法的时候,会用到setA...

  • 使用javassisit提升反射效率

    Javassist简介 Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京技术学院的数学...

  • 五招教你如何效率提升

    效率提升的包含五个方面:个人效率提升、组织效率提升、资产效率提升、战略效率提升、创新效率提升。 一、个人效率的提升...

  • cad快捷键有哪些?精选实用口诀分享,无论多忙都要记得看

    同事张:AutoCAD绘图,如何快速入门? 同事李:入门绘图,怎么快速提升绘图效率? 同事王:效率提升,必看的小技...

  • 做好这5步,让你工作效率翻三倍!

    职场上我们总在追求一件事情,那就是想着如何提升效率,老板也跟你说提升效率,怎么提升效率,下面五步助你一臂之力。 一...

  • 《超级个体》关于如何高效学习

    21-1功利读书法,五倍提升认知效率 在今天知识爆炸、终身学习的时代,要比的不是学不学,而是认知效率。 怎么提升呢...

  • 慢思考-特奥·康普诺利

    保持专注才能提升效率,让思考慢下来,少做点事情,你的收获可能更多。 三种脑:思考脑,反射脑,储存脑思考脑--->反...

  • 居家办公怎么提升效率?

    提升效率首先要找到效率的黑洞在哪里,居家办公,两个地方最吃效率: 一个是手机,一个是床。放下手机远离床,效率就会高...

  • 居家办公怎么提升效率?

    01 这一周出现了一百多个羊,很无奈我们也居家办公了,居家办公对我来说出现了点小困惑,我自认为自己是比较自律的,居...

  • 使用dynamic简化反射

    通常我们这样使用反射来调用一个函数 而使用dynamic可以简化这个流程,而且效率更高 当然优化后的反射效率更高,...

网友评论

      本文标题:怎么提升反射的效率

      本文链接:https://www.haomeiwen.com/subject/nfxtsltx.html