一篇好文章--Java程序性能测试
作者:网络转载 发布时间:[ 2013/8/28 10:01:22 ] 推荐标签:
同时我们的测试用例也做了一下改动,测试同样一个显而易见的问题,比较一个长度为1000的ArrayList和HashMap所占空间的大小,接口、实现如下:
publicinterfaceMemoConsumer{
publicvoidcreatArray();
publicvoidcreatHashMap();
}
publicclassMemoConsumerImplimplementsMemoConsumer{
ArrayListarr=null;
HashMaphash=null;
publicvoidcreatArray(){
arr=newArrayList(1000);
}
publicvoidcreatHashMap(){
hash=newHashMap(1000);
}
}
测试客户端代码如下:
MemoConsumerarrayMemo=(MemoConsumer)Handler.newInstance(newMemoConsumerImpl());
arrayMemo.creatArray();
arrayMemo.creatHashMap();
测试结果如下:
beginmethodcreatArray()
memoryincreasedby4400bytes
endmethodcreatArray
beginmethodcreatHashMap()
memoryincreasedby4480bytes
endmethodcreatHashMap
结果一幕了然,可以看到,我们只需要修改invoke()方法,然后简单执行客户端调用可以了。
6结束语
AOP通过分解关注点和OOP相得益彰,使程序更加简洁易懂,通过Java语言本身提供的动态代理帮助我们很容易分解关注点,取得了较好的效果。不过测试对象必须实现接口在一定程度上限制了动态代理的使用,可以借鉴Spring中使用的CGlib来为没有实现任何接口的类创建动态代理。

sales@spasvo.com