Hessian与REST性能测试

一、测试结论

       1、时间性能:Hessian略优,但REST和Hessian都在一个数量级,差别不大。

       2、内存使用量:REST的内存使用量约为Hessian的两倍,多出的内存主要在Client端,需要对String进行Json解析。

二、测试例证

      1、测试环境

            Client和Server端,还有数据库都在同一主机。

            Client运行在Tomcat7.0.57

            Server运行在eclipse的Jetty

            数据库为Mysql

            测试数据大约为:250M

       2、测试程序

            (1)Hessian

             

public interface HessianServer {
   public List<ImageAdvertisement> getImageAdvertisements();
}

public class HessianServerImpl implements HessianServer {

	@Resource(name = "springHibernateImageAdvertisementManagement")
	ImageAdvertisementManagement imageAdvertisementManagement;

	@Override
	public List<ImageAdvertisement> getImageAdvertisements() {
		List<ImageAdvertisement> result=imageAdvertisementManagement.get();		
		return result;
	}

}


@Controller
@RequestMapping("/hessianservice")
public class HessianController {

	@Resource(name = "hessianClient")
	HessianServer hessianServer;


	@RequestMapping("/getService")
	public @ResponseBody Map<String, Object> show() {
		Map<String, Object> result = new HashMap<String, Object>();
		result.put("startTime", new Date());
		List<ImageAdvertisement> imageAdvertisements = hessianServer
				.getImageAdvertisements();
		result.put("endTime", new Date());
		result.put("count", imageAdvertisements.size());
		return result;
	}
}

public class ImageAdvertisement implements Serializable {

	private static final long serialVersionUID = -1687931350435057180L;
	private String extension;
	private byte[] bytes;
	private String title;
	private Date createTime;
}


            (2)Rest

@Controller
@RequestMapping("/restserver")
public class RestServer {

	@Resource(name = "springHibernateImageAdvertisementManagement")
	ImageAdvertisementManagement imageAdvertisementManagement;


	@RequestMapping("/getService")
	public @ResponseBody List<ImageAdvertisement> getService() {
		
		List<ImageAdvertisement> result=imageAdvertisementManagement.get();
		return result;
	}
}

@Controller
@RequestMapping("/restservice")
public class RestController {

	private static RestTemplate createRestTemplate(){
	       HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
	       requestFactory.setReadTimeout(600000);
	       requestFactory.setConnectTimeout(10000);
	       return new RestTemplate(requestFactory);
	     }

	@RequestMapping("/getService")
	public @ResponseBody Map<String, Object> show() throws JsonParseException, JsonMappingException, IOException {
		Map<String, Object> result = new HashMap<String, Object>();
		RestTemplate restTemplate=createRestTemplate();
		ObjectMapper objectMapper=new ObjectMapper();
		JavaType javaType =objectMapper.getTypeFactory().constructParametricType(List.class, ImageAdvertisement.class); 
		List<ImageAdvertisement> imageAdvertisements=new ArrayList<ImageAdvertisement>();
		result.put("startTime", new Date());
		String restStr=restTemplate.getForObject("http://localhost:9080/demo/restserver/getService", String.class ); 
		imageAdvertisements = objectMapper.readValue(restStr,javaType);
		result.put("endTime", new Date());
		result.put("count", imageAdvertisements.size());
		
		return result;
	}
}

       3、测试结果

                 (1)Hessian

                   容器启动:
                    hessian client:java  341M
                    hessian server:javaw 555M

                   实例运行:
                   hessian client:java  859M
                   hessian server:javaw 1205M
                   start time:2015-05-11 12:54:57
                   end time:2015-05-11 12:55:26
                   total time:29s

                (2)Hessian
                 容器启动:
                  rest client:java  343M
                  rest server:javaw 555M

                 实例运行:
                 rest client:java  1810M
                 rest server:javaw 1202M
                 start time  2015-05-11 12:46:01
                 end  time  2015-05-11 12:46:49
                 total time: 48s


      


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值