关于反射效率的测试

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

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次写的请求也是可以接受的

猜你喜欢

转载自www.cnblogs.com/lcmlyj/p/13210530.html