反射与set效率对比
public class Test7 {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
A a= new A();
long start= System.currentTimeMillis();
for (int i= 0; i< 100000; i++) {
setval1(a);
}
System.out.println("耗时"+(System.currentTimeMillis()-start));
}
//50000 平均50ms 1000000 159ms 100000000 8856ms
private static void setval1(A a) throws NoSuchFieldException, IllegalAccessException {
Field field= A.class.getDeclaredField("a");
field.setAccessible(false);
field.set(a,"1");
}
//50000 2ms 1000000 5ms 100000000 13ms
private static void setval2(A a) throws NoSuchFieldException, IllegalAccessException {
a.setA("1");
}
}
class A {
String a;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
}
网友评论