Java?з??????????
???????????? ???????[ 2015/5/21 13:37:10 ] ??????????????? Java
????Java????Ч???????Σ???????????????????????.?????ο?.
???????????:
????1. ?????Bean(int??Integer??String)??set????
????2. loop 1???
????3. ????????????????????????????????????????????????set????????
??????????:
?????ó???????????:
????1.JDK????Ч??????????????????????????20??
????2.???set??????????????? = 4633ms / 1?? / 3?? = 0.0154us
????3.Cglib??fastmethod???????????
?????????????????????????????Щ?????????????????????????£?
??????????
??????????
???????????????????????
???????reflectasm?????
long now;
long sum = 0;
TestClass t = new TestClass();
now = System.currentTimeMillis();
for(int i = 0; i<500000; ++i){
t.setNum(i);
sum += t.getNum();
}
System.out.println("get-set???"+(System.currentTimeMillis() - now) + "ms??????" +sum);
sum = 0;
now = System.currentTimeMillis();
for(int i = 0; i<500000; ++i){
Class<?> c =Class.forName("test.TestClass");
Class<?>[] argsType = newClass[1];
argsType[0] = int.class;
Method m =c.getMethod("setNum"?? argsType);
m.invoke(t?? i);
sum += t.getNum();
}
System.out.println("?????????"+(System.currentTimeMillis()- now) + "ms??????" +sum);
sum = 0;
Class<?> c = Class.forName("test.TestClass");
Class<?>[] argsType = new Class[1];
argsType[0] = int.class;
Method m = c.getMethod("setNum"?? argsType);
now = System.currentTimeMillis();
for(int i = 0; i<500000; ++i){
m.invoke(t?? i);
sum += t.getNum();
}
System.out.println("???淴????"+(System.currentTimeMillis()- now) + "ms??????" +sum);
sum = 0;
MethodAccess ma = MethodAccess.get(TestClass.class);
int index = ma.getIndex("setNum");
now = System.currentTimeMillis();
for(int i = 0; i<500000; ++i){
ma.invoke(t?? index?? i);
sum += t.getNum();
}
System.out.println("reflectasm??????"+(System.currentTimeMillis() - now) + "ms??????" +sum);
????????????
????get-set???6ms??
?????????????1838ms
???????淴????70ms
????reflectasm??????20ms
?????????????????????????????????JDK7???????????????JDK6??40??????10???????reflectasm invoke??Ч???java???invoke????????????????4?????Ч??????????á?
??????
![](/images/ad-banner/ad-banner.png)
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11