感觉反射调用对整个Web过程来说可以忽略不计哦,虽然和直接调用相差还是蛮大的
我机器(945主板、Celeron D 3.06、1G内存、XP系统)的测试结果:
不添加干扰方法
:797
:109
添加了干扰方法后
:812
:120
大家可以做下测试,代码如下
我机器(945主板、Celeron D 3.06、1G内存、XP系统)的测试结果:
不添加干扰方法
:797
:109
添加了干扰方法后
:812
:120
大家可以做下测试,代码如下
package example;
import java.lang.reflect.Method;
public class Methoder {
public static void main(String[] args) throws Exception {
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; ++i) {
p1();
}
System.out.println(":" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
for (int i = 0; i < 100000; ++i) {
p2();
}
System.out.println(":" + (System.currentTimeMillis() - start));
}
public static void p1() throws Exception {
Test t = new Test();
Class c = t.getClass();
Method m = c.getMethod("sayHello", new Class[0]);
m.invoke(t, new Object[0]);
}
public static void p2() throws Exception {
Test t = new Test();
t.sayHello();
}
}
class Test {
public void sayHello() {
// System.out.println("Test:");
int l = 0;
for (int i = 0; i < 1000; ++i) {
l += i;
}
}
// 以下方法为干扰用,但是两种调用方法都时间延长了点
public void sayHello1() {
}
public void sayHello2() {
}
public void sayHello3() {
}
public void sayHello4() {
}
public void sayHello5() {
}
public void sayHello6() {
}
public void sayHello7() {
}
public void sayHello8() {
}
public void sayHello9() {
}
public void sayHello10() {
}
public void sayHello11() {
}
public void sayHello12() {
}
public void sayHello13() {
}
public void sayHello14() {
}
public void sayHello15() {
}
public void sayHello16() {
}
public void sayHello17() {
}
public void sayHello18() {
}
public void sayHello19() {
}
public void sayHello20() {
}
public void sayHello21() {
}
public void sayHello22() {
}
public void sayHello23() {
}
public void sayHello24() {
}
public void sayHello25() {
}
public void sayHello26() {
}
public void sayHello27() {
}
public void sayHello28() {
}
public void sayHello29() {
}
public void sayHello30() {
}
}