IoSummary.java

net.minecraft.util.profiling.jfr.stats.IoSummary

信息

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

    TODO

字段/常量

  • totalCountAndSize

    • 类型: IoSummary.CountAndSize
    • 修饰符: private final
    • 源码定位: L9
    • 说明:

      TODO

  • largestSizeContributors

    • 类型: List<Pair<T,IoSummary.CountAndSize>>
    • 修饰符: private final
    • 源码定位: L10
    • 说明:

      TODO

  • recordingDuration

    • 类型: Duration
    • 修饰符: private final
    • 源码定位: L11
    • 说明:

      TODO

内部类/嵌套类型

  • net.minecraft.util.profiling.jfr.stats.IoSummary.CountAndSize
    • 类型: record
    • 修饰符: public
    • 源码定位: L42
    • 说明:

      TODO

构造器

public IoSummary(Duration recordingDuration, List<Pair<T,IoSummary.CountAndSize>> packetStats) @ L13

  • 构造器名:IoSummary
  • 源码定位:L13
  • 修饰符:public

参数:

  • recordingDuration: Duration
  • packetStats: List<Pair<T,IoSummary.CountAndSize>>

说明:

TODO

方法

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

public double getCountsPerSecond() @ L22

  • 方法名:getCountsPerSecond
  • 源码定位:L22
  • 返回类型:double
  • 修饰符:public

参数:

说明:

TODO

public double getSizePerSecond() @ L26

  • 方法名:getSizePerSecond
  • 源码定位:L26
  • 返回类型:double
  • 修饰符:public

参数:

说明:

TODO

public long getTotalCount() @ L30

  • 方法名:getTotalCount
  • 源码定位:L30
  • 返回类型:long
  • 修饰符:public

参数:

说明:

TODO

public long getTotalSize() @ L34

  • 方法名:getTotalSize
  • 源码定位:L34
  • 返回类型:long
  • 修饰符:public

参数:

说明:

TODO

public List<Pair<T,IoSummary.CountAndSize>> largestSizeContributors() @ L38

  • 方法名:largestSizeContributors
  • 源码定位:L38
  • 返回类型:List<Pair<T,IoSummary.CountAndSize>>
  • 修饰符:public

参数:

说明:

TODO

代码

public final class IoSummary<T> {
    private final IoSummary.CountAndSize totalCountAndSize;
    private final List<Pair<T, IoSummary.CountAndSize>> largestSizeContributors;
    private final Duration recordingDuration;
 
    public IoSummary(Duration recordingDuration, List<Pair<T, IoSummary.CountAndSize>> packetStats) {
        this.recordingDuration = recordingDuration;
        this.totalCountAndSize = packetStats.stream().map(Pair::getSecond).reduce(new IoSummary.CountAndSize(0L, 0L), IoSummary.CountAndSize::add);
        this.largestSizeContributors = packetStats.stream()
            .sorted(Comparator.comparing(Pair::getSecond, IoSummary.CountAndSize.SIZE_THEN_COUNT))
            .limit(10L)
            .toList();
    }
 
    public double getCountsPerSecond() {
        return (double)this.totalCountAndSize.totalCount / this.recordingDuration.getSeconds();
    }
 
    public double getSizePerSecond() {
        return (double)this.totalCountAndSize.totalSize / this.recordingDuration.getSeconds();
    }
 
    public long getTotalCount() {
        return this.totalCountAndSize.totalCount;
    }
 
    public long getTotalSize() {
        return this.totalCountAndSize.totalSize;
    }
 
    public List<Pair<T, IoSummary.CountAndSize>> largestSizeContributors() {
        return this.largestSizeContributors;
    }
 
    public record CountAndSize(long totalCount, long totalSize) {
        private static final Comparator<IoSummary.CountAndSize> SIZE_THEN_COUNT = Comparator.comparing(IoSummary.CountAndSize::totalSize)
            .thenComparing(IoSummary.CountAndSize::totalCount)
            .reversed();
 
        IoSummary.CountAndSize add(IoSummary.CountAndSize that) {
            return new IoSummary.CountAndSize(this.totalCount + that.totalCount, this.totalSize + that.totalSize);
        }
 
        public float averageSize() {
            return (float)this.totalSize / (float)this.totalCount;
        }
    }
}

引用的其他类