Chan Chen Coding...

          關(guān)于memcache取多值的性能比較

          測試代碼
                  List<Integer> lids = new ArrayList<Integer>();
                  for(int i = 0; i < 10000; i++){
                      lids.add(i);
                  }
                  lids.add(8700);
                  lids.add(8703);
                  Map<Integer, Integer> map = new HashMap();
                  long startTime = System.currentTimeMillis();
                  map = playlistServiceClient.getPlaylistPlaytimsByLids(lids);
                  long endTime = System.currentTimeMillis();
                  logger.info((endTime - startTime)  + " millseconds");
          一次性去memcache多值的代碼
              /**
               * 獲取豆單的歷史播發(fā)總數(shù)
               * 
               * 
          @param lid
               *          豆單ID
               * 
          @return 個(gè)數(shù)
               
          */
              public int getPlaylistPlaytimsByLid(int lid) {
                  Object cacheResult = ptsMemcacheClient.get(PLAYLIST_PTS_KEY_PL_HIS_PT + lid);
                  String key = PLAYLIST_PTS_KEY_PL_HIS_PT + lid;
                  if (cacheResult != null) {
                      return Integer.parseInt((String) cacheResult);
                  } else {
                      return -1;
                  }
              }

              /**
               * 獲取豆單列表的歷史播發(fā)總數(shù)
               * 
               * 
          @param lids
               *          豆單ID列表
               * 
          @return 個(gè)數(shù)
               
          */
              public Map<Integer, Integer> getPlaylistPlaytimsByLids(List<Integer> lids) {
                  if (CollectionUtils.isEmpty(lids)) {
                      return Collections.EMPTY_MAP;
                  }
                  Map<Integer, Integer> result = new HashMap<Integer, Integer>();
                  int size = lids.size();
                  String[] keys = new String[lids.size()];
                  for (int i = 0; i < size; i++) {
                      keys[i] = PLAYLIST_PTS_KEY_PL_HIS_PT + lids.get(i);
                  }
                  Map<String, Object> cacheMap = ptsMemcacheClient.getMulti(keys);
                  for (int i = 0; i < size; i++) {
                      Object value = cacheMap.get(PLAYLIST_PTS_KEY_PL_HIS_PT + lids.get(i));
                      result.put(lids.get(i), (value == null) ? -1 : Integer.parseInt((String) value));
                  }
                  return result;
              }
          性能
           2013-04-26 15:09:22 [com.tudou.programs.action.TestAction]-[INFO] lid : 99
           2013-04-26 15:09:22 [com.tudou.programs.action.TestAction]-[INFO] 99: -1
           2013-04-26 15:09:22 [com.tudou.programs.action.TestAction]-[INFO] 363 millseconds
           2013-04-26 15:09:33 [com.tudou.programs.action.TestAction]-[INFO] lid : 8700
           2013-04-26 15:09:33 [com.tudou.programs.action.TestAction]-[INFO] 8700: 33
           2013-04-26 15:09:33 [com.tudou.programs.action.TestAction]-[INFO] 115 millseconds
           2013-04-26 15:09:39 [com.tudou.programs.action.TestAction]-[INFO] lid : 8701
           2013-04-26 15:09:39 [com.tudou.programs.action.TestAction]-[INFO] 8701: 33
           2013-04-26 15:09:39 [com.tudou.programs.action.TestAction]-[INFO] 50 millseconds
           2013-04-26 15:09:42 [com.tudou.programs.action.TestAction]-[INFO] lid : 8701
           2013-04-26 15:09:42 [com.tudou.programs.action.TestAction]-[INFO] 8701: 33
           2013-04-26 15:09:42 [com.tudou.programs.action.TestAction]-[INFO] 52 millseconds
           2013-04-26 15:09:43 [com.tudou.programs.action.TestAction]-[INFO] lid : 8701
           2013-04-26 15:09:43 [com.tudou.programs.action.TestAction]-[INFO] 8701: 33
           2013-04-26 15:09:43 [com.tudou.programs.action.TestAction]-[INFO] 57 millseconds
            2013-04-26 15:10:21 [com.tudou.programs.action.TestAction]-[INFO] lid : 10000
           2013-04-26 15:10:21 [com.tudou.programs.action.TestAction]-[INFO] 10000: -1
           2013-04-26 15:10:21 [com.tudou.programs.action.TestAction]-[INFO] 78 millseconds

          多次從memcache取值的代碼
                      /**
               * 獲取豆單的歷史播發(fā)總數(shù)
               * 
               * 
          @param lid
               *          豆單ID
               * 
          @return 個(gè)數(shù)
               
          */
              public int getPlaylistPlaytimsByLid(int lid) {
                  Object cacheResult = ptsMemcacheClient.get(PLAYLIST_PTS_KEY_PL_HIS_PT + lid);
                  String key = PLAYLIST_PTS_KEY_PL_HIS_PT + lid;

                  if (cacheResult != null) {
                      return Integer.parseInt((String) cacheResult);
                  } else {
                      return -1;
                  }
              }

              /**
               * 獲取豆單列表的歷史播發(fā)總數(shù)
               * 
               * 
          @param lids
               *          豆單ID列表
               * 
          @return 個(gè)數(shù)
               
          */
              public Map<Integer, Integer> getPlaylistPlaytimsByLids(List<Integer> lids) {
                  if (CollectionUtils.isEmpty(lids)) {
                      return Collections.EMPTY_MAP;
                  }
                  HashMap<Integer, Integer> resultMap = new HashMap<Integer, Integer>();
                  for (Integer lid : lids) {
                      resultMap.put(lid, getPlaylistPlaytimsByLid(lid));
                  }
                  return resultMap;
              }
                  
          性能
          2013-04-26 15:13:03 [com.tudou.programs.action.TestAction]-[INFO] lid : 10000
           2013-04-26 15:13:03 [com.tudou.programs.action.TestAction]-[INFO] 10000: -1
           2013-04-26 15:13:17 [com.tudou.programs.action.TestAction]-[INFO] 14206 millseconds
           2013-04-26 15:13:27 [com.tudou.programs.action.TestAction]-[INFO] lid : 8700
           2013-04-26 15:13:27 [com.tudou.programs.action.TestAction]-[INFO] 8700: 33
          2013-04-26 15:13:41 [com.tudou.programs.action.TestAction]-[INFO] 13703 millseconds
           2013-04-26 15:14:25 [com.tudou.programs.action.TestAction]-[INFO] lid : 99
           2013-04-26 15:14:25 [com.tudou.programs.action.TestAction]-[INFO] 99: -1
           2013-04-26 15:14:38 [com.tudou.programs.action.TestAction]-[INFO] 13457 millseconds

          結(jié)論,一次取多值的性能要高于多次取值。

          -----------------------------------------------------
          Silence, the way to avoid many problems;
          Smile, the way to solve many problems;

          posted on 2013-04-26 15:42 Chan Chen 閱讀(315) 評論(0)  編輯  收藏 所屬分類: Scala / Java

          主站蜘蛛池模板: 龙井市| 高碑店市| 中超| 抚顺县| 乐业县| 金溪县| 西宁市| 栾城县| 东阳市| 犍为县| 南木林县| 墨江| 华阴市| 防城港市| 嘉峪关市| 桦甸市| 神池县| 象山县| 秦皇岛市| 繁峙县| 淳安县| 吉木乃县| 吴堡县| 安乡县| 巩义市| 四平市| 突泉县| 鄯善县| 井研县| 宜昌市| 玉田县| 南皮县| 江孜县| 绵阳市| 额尔古纳市| 静宁县| 天台县| 衡阳县| 新巴尔虎右旗| 永善县| 吉木萨尔县|