zoukankan      html  css  js  c++  java
  • 关于反射效率的测试

    前言:由于项目中有一些公共的属性需要初始化,例如创建人、创建时间等。考虑两种做法,一种是通过反射的方式实现,还有就是通过继承公共类的方式。两种方式各有利弊,反射对原有的类侵入性小,但是反射有效率问题,而继承公共类的话对类侵入性大,可维护性不太好。所以呢,想使用反射,然后测试一下反射的效率

    public class Test {
    
        public static void main(String[] args) {
            long s = System.currentTimeMillis();
    
            User user = new User();
            for(int i = 0; i < 1000000; i++) {
                //上面是反射,下面是未用反射
    //            CommonFieldInitUtil.init(user, 1, 1);
                user.init(1);
            }
            System.out.println("耗时: " + (System.currentTimeMillis() - s));
        }
    }
    
    

    CommonFieldInitUtil代码中包含了8个try catch与6个反射的代码块,分别记录了1000次循环到一百万次循环所耗时间。

    下面是测试结果:

    左边是反射,右边是对象set
    1000次循环:80-122ms 66-86ms
    10000次循环:150-187ms 80-108ms
    100000次循环:454-592ms 134-191ms
    1000000次循环:3430-5000ms 308-418ms

    结论:

    从测试结果看到,一般一次所消耗的时间为0.005ms到0.1ms之间到对于一般的服务器来说,哪怕每秒处理10000次写的请求也是可以接受的

  • 相关阅读:
    [loj2706]文本编辑器
    [atAGC053C]Random Card Game
    [atAGC056E]Cheese
    [cf1615G]Maximum Adjacent Pairs
    [cf739D]Recover a functional graph
    [uoj693]地铁规划
    [atAGC053E]More Peaks More Fun
    [atAGC056B]Range Argmax
    [atAGC056F]Degree Sequence in DFS Order
    SceneGrabber NET 视频批量自动截图软件使用技巧
  • 原文地址:https://www.cnblogs.com/lcmlyj/p/13210530.html
Copyright © 2011-2022 走看看