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