TimedStatSummary.java

net.minecraft.util.profiling.jfr.stats.TimedStatSummary

信息

  • 全限定名:net.minecraft.util.profiling.jfr.stats.TimedStatSummary
  • 类型:public record
  • 包:net.minecraft.util.profiling.jfr.stats
  • 源码路径:src/main/java/net/minecraft/util/profiling/jfr/stats/TimedStatSummary.java
  • 起始行号:L11
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

public static <T extends TimedStat> Optional<TimedStatSummary<T>> summary(List<T> values) @ L14

  • 方法名:summary
  • 源码定位:L14
  • 返回类型: Optional<TimedStatSummary>
  • 修饰符:public static

参数:

  • values: List

说明:

TODO

代码

public record TimedStatSummary<T extends TimedStat>(
    T fastest, T slowest, @Nullable T secondSlowest, int count, Map<Integer, Double> percentilesNanos, Duration totalDuration
) {
    public static <T extends TimedStat> Optional<TimedStatSummary<T>> summary(List<T> values) {
        if (values.isEmpty()) {
            return Optional.empty();
        } else {
            List<T> sorted = values.stream().sorted(Comparator.comparing(TimedStat::duration)).toList();
            Duration totalDuration = sorted.stream().map(TimedStat::duration).reduce(Duration::plus).orElse(Duration.ZERO);
            T fastest = (T)sorted.getFirst();
            T slowest = (T)sorted.getLast();
            T secondSlowest = sorted.size() > 1 ? sorted.get(sorted.size() - 2) : null;
            int count = sorted.size();
            Map<Integer, Double> percentilesNanos = Percentiles.evaluate(sorted.stream().mapToLong(it -> it.duration().toNanos()).toArray());
            return Optional.of(new TimedStatSummary<>(fastest, slowest, secondSlowest, count, percentilesNanos, totalDuration));
        }
    }
}

引用的其他类

  • Percentiles

    • 引用位置: 方法调用
    • 关联成员: Percentiles.evaluate()
  • TimedStat

    • 引用位置: 返回值