StopWatch 监控Java代码运行时间和分析性能

来源:互联网 发布:php post接口开发 编辑:程序博客网 时间:2024/05/29 16:58

我们在日常进行Java语言开发时,可能需要监控不同方法的运行时间,知道性能瓶颈在哪。利用springframework框架的工具类StopWatch可以快速方便的查看到每段代码运行的时间,准确确定性能瓶颈所在。
原文:http://blog.csdn.net/hj289860219/article/details/75262037


使用StopWatch类也很简单。new出实例,调用该实例的start()和stop()方法即可。如下代码

[java] view plain copy
print?
  1.        StopWatch stopWatch = new StopWatch();  
  2.         //房间类型图片  
  3.         List<ImageData> images = platenoHotelService.getHotelImage(innId, 2);  
  4.         Map<String, String> imageUrl = new HashMap<>();  
  5.         if (images !=null) {  
  6.             for (ImageData image : images) {  
  7.                 imageUrl.put(image.getRoomTypeCode(), image.getImageUrl());  
  8.             }  
  9.         }  
  10.         //调用酒店房型列表  
  11.         stopWatch.start(”search.getHotelRoomType”);  
  12.         String roomType = platenoHotelService.getHotelRoomType(innId);  
  13.         stopWatch.stop();  
  14.         stopWatch.start(”search.parseObject”);  
  15.         JSONObject roomTypeList = JSONObject.parseObject(roomType);  
  16.         JSONArray roomTypeArray = roomTypeList.getJSONObject(”data”).getJSONArray(“roomTypeData”);  
  17.         stopWatch.stop();  
  18.         List<HotelRoomTypeVO> hotelRoomTypeVOList = new ArrayList<>();  
  19.         stopWatch.start(”search.roomTypeArrayForeach”);  
  20.         for (Object roomTypeItem : roomTypeArray) {  
  21.             JSONObject roomTypeObject = (JSONObject)roomTypeItem;  
  22.             HotelRoomTypeVO hotelRoom = JSONObject.toJavaObject(roomTypeObject, HotelRoomTypeVO.class);  
  23.             if(hotelRoom.getValid() == 1) {  
  24.                 RealRoomStatusData realRoomStatusData = platenoHotelService.getHotelRoomInfo(innId, hotelRoom.getRoomTypeCode(), endOfDay, sourceType, days);  
  25.                 if (realRoomStatusData != null) {  
  26.                     hotelRoom.setImageUrl(imageUrl.get(hotelRoom.getRoomTypeCode()));  
  27.                     hotelRoom.setRealRoomStatusData(realRoomStatusData);  
  28.                     hotelRoomTypeVOList.add(hotelRoom);  
  29.                 }  
  30.             }  
  31.   
  32.         }  
  33.         stopWatch.stop();  
  34.         logger.info(”[酒店房型列表耗时:]” + stopWatch.prettyPrint());  
        StopWatch stopWatch = new StopWatch();        //房间类型图片        List<ImageData> images = platenoHotelService.getHotelImage(innId, 2);        Map<String, String> imageUrl = new HashMap<>();        if (images !=null) {            for (ImageData image : images) {                imageUrl.put(image.getRoomTypeCode(), image.getImageUrl());            }        }        //调用酒店房型列表        stopWatch.start("search.getHotelRoomType");        String roomType = platenoHotelService.getHotelRoomType(innId);        stopWatch.stop();        stopWatch.start("search.parseObject");        JSONObject roomTypeList = JSONObject.parseObject(roomType);        JSONArray roomTypeArray = roomTypeList.getJSONObject("data").getJSONArray("roomTypeData");        stopWatch.stop();        List<HotelRoomTypeVO> hotelRoomTypeVOList = new ArrayList<>();        stopWatch.start("search.roomTypeArrayForeach");        for (Object roomTypeItem : roomTypeArray) {            JSONObject roomTypeObject = (JSONObject)roomTypeItem;            HotelRoomTypeVO hotelRoom = JSONObject.toJavaObject(roomTypeObject, HotelRoomTypeVO.class);            if(hotelRoom.getValid() == 1) {                RealRoomStatusData realRoomStatusData = platenoHotelService.getHotelRoomInfo(innId, hotelRoom.getRoomTypeCode(), endOfDay, sourceType, days);                if (realRoomStatusData != null) {                    hotelRoom.setImageUrl(imageUrl.get(hotelRoom.getRoomTypeCode()));                    hotelRoom.setRealRoomStatusData(realRoomStatusData);                    hotelRoomTypeVOList.add(hotelRoom);                }            }        }        stopWatch.stop();        logger.info("[酒店房型列表耗时:]" + stopWatch.prettyPrint());


为了查看结果,调用prettyPrint()方法即可,下图就是上面示例的运行结果。可以看出总花费时间6062ms。三列分别为监控代码段的花费时间(毫秒)、百分比、名称。可以很直观看出每段代码的运行时间以及所占比分比,帮助我们快速找到主要性能问题。



阅读全文
0 0
原创粉丝点击