oscache 缓存对象的性能测试

        为了提高系统的性能,计划在系统中缓存很多的动态对象。于是我就找到了OSCacheOSCache 是一个开源的项目,它提供一套缓存解决方案,可以动态缓存JSP内容、Servlet响应、任意对象。 

       使用之前想测试一下它的性能如何?由于只想使用OSCache缓存对象的功能,因此先对OSCache缓存对象的的性能做了一个简单的测试。

测试方法

1,在cache中存放了20万个简单的Form对象。

 2,从cache中取出任意2000个对象。

3,从cache中移除任意2000个对象。

测试环境

硬件:CPU PM1.86GHZ / Memory 1024M

软件:windowXP / JDK1.5.0_12 

测试结果

1,装载Form对象的时间相对教长,耗时2485ms。

2,从cache中获取2000个对象耗时141ms。

3,从cache中移除2000个对象耗时0ms。

 

源代码

package oscache.test;

import java.util.Vector;

import org.apache.commons.lang.RandomStringUtils;

import com.opensymphony.oscache.general.GeneralCacheAdministrator;

/**
 * OSCache 性能测试
 * @author kevin
 *
 */
public class OsCachePerformanceTest  {
 
 GeneralCacheAdministrator cache = new GeneralCacheAdministrator();
 Vector keys = new Vector();
 
 public void load(){
  int LEN = 200*000;
  
  for(int i=0;i<LEN;i++){
   DataForm form = new DataForm();
   form.setKey(RandomStringUtils.randomAlphanumeric(20));
   form.setName(i + "kkkk");
   cache.putInCache(form.getKey(), form);
   if(i%100 == 0){
    keys.add(form.getKey());
   }
  }
 }
 
 public void testFetchTime(){
  long beginTime = System.currentTimeMillis();
  for(int i=0;i<keys.size();i++){
   long startTime = System.currentTimeMillis();
   String key = (String)keys.get(i);
   DataForm form = null;
   try{
    form = (DataForm)cache.getFromCache(key);
   }catch(Exception e){
    
   }
   System.out.println("**" + i + ":" + (System.currentTimeMillis() - startTime)
     + "," + form.getName());
  }
  
  System.out.println("serachSumTime=" + (System.currentTimeMillis() - beginTime));
  
  beginTime = System.currentTimeMillis();
  
  for(int i=0;i<keys.size();i++){

   String key = (String)keys.get(i);  
   try{
    cache.removeEntry(key);
   }catch(Exception e){
    
   }
  }  
  
  System.out.println("removeSumTime=" + (System.currentTimeMillis() - beginTime));
 }
 
 public static void main(String[] args){
  long beginTime = System.currentTimeMillis();
  OsCachePerformanceTest dataLoad = new OsCachePerformanceTest();
  dataLoad.load();
  dataLoad.testFetchTime();
  System.out.println("sumTime=" + (System.currentTimeMillis() - beginTime));
 }
}

package oscache.test;
/**
 * form对象
 * @author kevin
 *
 */
public class DataForm {
 private String name = "";
 private String value = "";
 private String key = "";
 
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getValue() {
  return value;
 }
 public void setValue(String value) {
  this.value = value;
 }
 public String getKey() {
  return key;
 }
 
 public void setKey(String key) {
  this.key = key;
 }
  
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值