一篇好文章--Java程序性能测试
作者:网络转载 发布时间:[ 2013/8/28 10:01:22 ] 推荐标签:
我们要测试的例子是java.util.LinkedList和java.util.ArrayList的get(intindex)方法,显然ArrayList要比LinkedList高效,因为前者是随机访问,而后者需要顺序访问。
首先我们创建一个接口
publicinterfaceFoo{
publicvoidtestArrayList();
publicvoidtestLinkedList();
}
然后我们创建测试对象实现这个接口
publicclassFooImplimplementsFoo{
privateListlink=newLinkedList();
privateListarray=newArrayList();
publicFooImpl()
{
for(inti=0;i<10000;i++)
{
array.add(newInteger(i));
link.add(newInteger(i));
}
}
publicvoidtestArrayList()
{
for(inti=0;i<10000;i++)
array.get(i);
}
publicvoidtestLinkedList()
{
for(inti=0;i<10000;i++)
link.get(i);
}
}
接下来我们要做关键的一步,实现InvocationHandler接口
importjava.lang.reflect.InvocationHandler;
importjava.lang.reflect.Method;
importjava.lang.reflect.*;
publicclassHandlerimplementsInvocationHandler{
privateObjectobj;
publicHandler(Objectobj){
this.obj=obj;
}
publicstaticObjectnewInstance(Objectobj){
Objectresult=Proxy.newProxyInstance(obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(),newHandler(obj));
return(result);
}
publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{
Objectresult;
try{
System.out.print("beginmethod"+method.getName()+"(");
for(inti=0;args!=null&&i<args.length;i++){
if(i>0)System.out.print(",");
System.out.print(""+
args[i].toString());
}
System.out.println(")");
longstart=System.currentTimeMillis();
result=method.invoke(obj,args);
longend=System.currentTimeMillis();
System.out.println("themethod"+method.getName()+"lasts"+(end-start)+"ms");
}catch(InvocationTargetExceptione){
throwe.getTargetException();
}catch(Exceptione){
thrownewRuntimeException
("unexpectedinvocationexception:"+
e.getMessage());
}finally{
System.out.println("endmethod"+method.getName());
}
returnresult;
}
}
相关推荐
更新发布
功能测试和接口测试的区别
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