else if 与反射invoke性能比较测试(用于servlet判断调用方法),从测试结果看,只有几个方法的时候直接用if else if比较快,第一次使用invoke的时候花费的时间比较长,但之后基本上一致,比较平稳。在100个方法以后invoke方法比else少一个数量级别的时间,不过差别都是在纳秒范围内。
但采用invoke有一个明显的优势就是增加新的方法的时候不需要写判断语句的代码,直接添加方法就可以了,可以节省很长一段else if 代码的判断和维护。
两次运行结果:
if method1用时:55147纳秒,0毫秒
invoke method1用时:227628纳秒,0毫秒
if method2用时:49518纳秒,0毫秒
invoke method2用时:52185纳秒,0毫秒
if method100用时:193578纳秒,0毫秒
invoke method100用时:41914纳秒,0毫秒
if method500用时:507870纳秒,0毫秒
invoke method500用时:42386纳秒,0毫秒
if method1000用时:496012纳秒,0毫秒
invoke method1000用时:44326纳秒,0毫秒
=====================================
if method1用时:48170纳秒,0毫秒
invoke method1用时:216665纳秒,0毫秒
if method2用时:50090纳秒,0毫秒
invoke method2用时:52676纳秒,0毫秒
if method100用时:195969纳秒,0毫秒
invoke method100用时:44236纳秒,0毫秒
if method500用时:497615纳秒,0毫秒
invoke method500用时:43714纳秒,0毫秒
if method1000用时:494152纳秒,0毫秒
invoke method1000用时:43538纳秒,0毫秒
=======================================
下面是测试代码:
http://code.google.com/p/coos/source/browse/trunk/coos/src/com/coos/util/TestCase.java
下面是实现的servlet接口代码:
http://code.google.com/p/coos/source/browse/trunk/coos/src/com/coos/util/GetData.java
注:javaeye本身的语法着色js导致浏览器运行过慢弹出提示框,点击是就不显示我的代码了,所以用googlecode的代码功能!