Android测试函数使用时间(动态代理)


这个例子使用了动态代理,因此可以对实现了相同接口的所有类的对应方法进行测试。

 

package com.linquan.test.time;

//接口

public interface Testing {

public void testArrayList();

public void testLinkList();

 

}

 

//接口实现类:

 

package com.linquan.test.time;

 

import java.util.ArrayList;

import java.util.LinkedList;

import java.util.List;

 

public class TestingImpl implementsTesting{

 

private List link = newLinkedList();

private List array = newArrayList();

 

public TestingImpl(){

for(inti=0;i<10000;i++){

array.add(new Integer(i));

link.add(new Integer(i));

}

}

 

@Override

public void testArrayList() {

// TODO Auto-generated methodstub

for(inti=0;i<10000;i++){

array.get(i);

}

}

 

@Override

public void testLinkList() {

// TODO Auto-generated methodstub

for(inti=0;i<10000;i++){

link.get(i);

}

}

 

}

 

//动态代理类:

 

package com.linquan.test.time;

 

importjava.lang.reflect.InvocationHandler;

importjava.lang.reflect.Method;

import java.lang.reflect.Proxy;

 

import android.util.Log;

 

public class Handler implementsInvocationHandler {

 

private Object obj;

 

public Handler(Object obj) {

this.obj = obj;

}

 

public static ObjectnewInstance(Object obj) {

Object result =Proxy.newProxyInstance(obj.getClass().getClassLoader(),

obj.getClass().getInterfaces(), newHandler(obj));

return result;

}

 

@Override

public Object invoke(Object proxy,Method method, Object[] args)

throws Throwable {

 

Object result = null;

 

try {

Log.i("Handler", "begin method " +method.getName());

 

long start =System.currentTimeMillis();

result = method.invoke(obj,args);

long end =System.currentTimeMillis();

 

Log.i("Handler", "the method " +method.getName() + " lasts "

+ (end - start) + " ms");

} catch (Exception e) {

e.printStackTrace();

} finally {

Log.i("Handler", "end method " +method.getName());

}

 

return result;

}

 

}

//测试入口:

 

try {

Testing testing = (Testing)Handler.newInstance(new TestingImpl());

testing.testArrayList();

testing.testLinkList();

} catch (Exception e) {

}

///測試結果如下:

Android <wbr>测试函数使用时间(动态代理)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值