对Web中的Action使用反射与否影响不大 博客分类: Java WebJDKXP软件测试C
程序员文章站
2024-02-04 18:29:28
...
感觉反射调用对整个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() { } }