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的代码功能!
分享到:
相关推荐
Java反射 调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用基本类型数组参数的方法 调用String数组参数的方法 调用Object数组参数的方法 调用私有方法
Method,invoke,getMethod等反射私有方法和私有属性
本程序实现Invoke反射,内置说明txt文档,可以参考
C# Invoke多线程调用Demo......
if (listView1.InvokeRequired) //判断调用方对listView1控件的调用是否需要通过Invoke方法来调用 { listView1.Invoke(dailiEvent); } else { dailiEvent(); //线程间操作无效: 从不是创建控件“listView1”...
C_窗体中Invoke和BeginInvoke方法详解
java反射机制描述及Method.invoke解释
C#高效反射调用方法类 1.创建一个业务类(HomeService),在类下创建3个方法 2.正常方式调用类的方法 3.反射方式调用类的方法 4.调用代码 5.调用结果 6.Service类方法代码 内容扩展: 1、正常方式调用类的方法...
忽略跨线程访问的错误 CheckForIllegalCrossThreadCalls = false,但是这个方法很不稳定,使用invoke方法解决跨线程访问的问题,里边有2个例子, 通过自己额外创建的线程改变label控件中的内容从而验证invoke方法
使用反射,我们可以很容易地在运行时调用一些编译时无法确定的属性、方法等。在.NET中的反射可以实现从对象的外部来了解对象(或程序集)内部结构的功能,哪怕你不知道这个对象(或程序集)是个什么东西,另外.NET中...
在测试中,我们对单次调用时间较长的方法进行了分析,结果表明,java.lang.reflect.Method.invoke 占用了 165.2% 的 CPU 时间,java.sql.PreparedStatement.execute 占用了 15.4% 的 CPU 时间,java.sql.Statement....
在.NET环境下编写与RS252串口通信的应用程序的唯一方法,就是引用过时了的并且有点限制的MSComm ActiveX控件。这篇文章介绍了用C#安全代码编写一个多线程的,且时尚的与RS232通讯的基础类库。这个类库使用平台调用...
VC++调用DLL的演示示例代码,供测试调用的CommonDll.dll已经放在测试源码的根目录下,你下载源码后可运行InvokeDll.dsw编译项目源码,将编译生成在Bin目录中的InvokeDll.exe拷贝至根目录下,双击运行,可看到程序...
P/Invoke Interop Assistant,它支持托管代码和非托管代码之间的方法签名的转换,而且直接生成相关的C#或者是VB的方法调用代码。这个签名的转换,不只是适用于Windows的方法签名,只要给定一个C头文件,就可以转换...
在使用反射可以得到类模板class对象,那么得到类模板的class对象后,如何调用某个已知的且需要的方法呢?答案是使用method类的invoke方法,那么实现的代码如下,结合jdk的api和该代码便可以知道原理 package ...
主要介绍了Java反射机制及Method.invoke详解,本文讲解了JAVA反射机制、得到某个对象的属性、得到某个类的静态属性、执行某对象的方法、执行某个类的静态方法等内容,需要的朋友可以参考下
主要介绍了InvocationHandler中invoke()方法的调用问题分析,具有一定参考价值,需要的朋友可以了解下。
最后,我们可以使用反射调用相关WebService方法。我们可以使用System.Reflection命名空间中的MethodInfo类来调用WebService方法。 需要引用的名称空间 在动态调用WebService时,我们需要引用以下四个名称空间: * ...
让你快速掌握INvoke与BeginInvoke的区别,HAHA