public static List sortedAnalysedModel()

in tsfile-viewer-core/src/main/java/org/apache/iotdb/tool/core/util/TsFileEncodeCompressAnalysedUtil.java [382:421]


  public static List<EncodeCompressAnalysedModel> sortedAnalysedModel(
      Map<String, EncodeCompressAnalysedModel> map) {
    List<EncodeCompressAnalysedModel> sortedCostModels =
        map.values().stream()
            .sorted(Comparator.comparing(EncodeCompressAnalysedModel::getCompressedCost))
            .collect(Collectors.toList());
    List<EncodeCompressAnalysedModel> sortedCompressedModels =
        map.values().stream()
            .sorted(Comparator.comparing(EncodeCompressAnalysedModel::getCompressedSize))
            .collect(Collectors.toList());
    Map<String, EncodeCompressAnalysedModel> scoresMap = new HashMap<>();
    // 计算压缩得分
    for (int i = 0; i < sortedCompressedModels.size(); i++) {
      EncodeCompressAnalysedModel model = sortedCompressedModels.get(i);
      double compressedScores =
          compressedWeight * (1 - (double) model.getCompressedSize() / model.getOriginSize());
      double sequenceScores = 0;
      double rate = (double) i / sortedCostModels.size();
      if (rate < zeroRate) {
        sequenceScores = compressedSequenceWeight * (1 - rate);
      }
      model.setScore(compressedScores + sequenceScores);
      String key = model.getCompressName() + "-" + model.getEncodeName();
      scoresMap.put(key, model);
    }
    // 计算耗时得分
    for (int i = 0; i < sortedCostModels.size(); i++) {
      EncodeCompressAnalysedModel model = sortedCostModels.get(i);
      double sequenceScores = 0;
      double rate = (double) i / sortedCostModels.size();
      if (rate < zeroRate) {
        sequenceScores = compressedCostWeight * (1 - rate);
      }
      String key = model.getCompressName() + "-" + model.getEncodeName();
      scoresMap.get(key).setScore(scoresMap.get(key).getScore() + sequenceScores);
    }
    return scoresMap.values().stream()
        .sorted(Comparator.comparing(EncodeCompressAnalysedModel::getScore).reversed())
        .collect(Collectors.toList());
  }