Probe class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.engine.performanceinstruments

Файл: com/hypixel/hytale/builtin/hytalegenerator/engine/performanceinstruments/FlatTimingProfiler.java

Поля (6)

МодификаторыТипИмя
boolean hasStart
String label
long max
long min
long start
long total

Методы (1)

МодификаторыВозвратСигнатура
void clearvoid clear()

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.engine.performanceinstruments;

class="kw">import java.math.BigDecimal;
class="kw">import javax.annotation.Nonnull;

class="kw">public class FlatTimingProfiler {
   @Nonnull
   class="kw">private class="kw">final FlatTimingProfiler.Probe[] probes;
   class="kw">private long sampleCount;

   class="kw">public FlatTimingProfiler(int var1) {
      this.probes = new FlatTimingProfiler.Probe[var1];

      for (int var2 = 0; var2 < var1; var2++) {
         this.probes[var2] = new FlatTimingProfiler.Probe();
         this.probes[var2].label = Integer.toString(var2);
      }

      this.sampleCount = 0L;
   }

   @Nonnull
   class="kw">private class="kw">static String toString_ms(long var0) {
      class="kw">return BigDecimal.valueOf(var0 / 1000000.0).toString();
   }

   class="kw">public void setProbeLabel(int var1, @Nonnull String var2) {
      assert this.isValid(var1);
      this.probes[var1].label = var2;
   }

   class="kw">public void start(int var1) {
      assert this.isValid(var1);
      assert !this.probes[var1].hasStart;
      this.probes[var1].start = System.nanoTime();
      this.probes[var1].hasStart = true;
   }

   class="kw">public void stop(int var1) {
      assert this.isValid(var1);
      assert this.probes[var1].hasStart;
      long var2 = System.nanoTime() - this.probes[var1].start;
      this.probes[var1].total += var2;
      this.probes[var1].max = Math.max(this.probes[var1].max, var2);
      this.probes[var1].min = Math.min(this.probes[var1].min, var2);
      this.probes[var1].hasStart = false;
   }

   class="kw">public void save() {
      assert this.isAllProbesStopped();
      this.sampleCount++;
   }

   class="kw">public long getTotal_ns(int var1) {
      assert this.isValid(var1);
      assert this.isAllProbesStopped();
      class="kw">return this.probes[var1].total;
   }

   class="kw">public long getMin_ns(int var1) {
      assert this.isValid(var1);
      assert this.isAllProbesStopped();
      class="kw">return this.probes[var1].min;
   }

   class="kw">public long getMax_ns(int var1) {
      assert this.isValid(var1);
      assert this.isAllProbesStopped();
      class="kw">return this.probes[var1].max;
   }

   class="kw">public long getAverage_ns(int var1) {
      assert this.isValid(var1);
      assert this.isAllProbesStopped();
      class="kw">return this.probes[var1].total / this.sampleCount;
   }

   class="kw">public long getSampleCount() {
      class="kw">return this.sampleCount;
   }

   class="kw">public void clear() {
      assert this.isAllProbesStopped();
      this.sampleCount = 0L;

      for (FlatTimingProfiler.Probe var4 : this.probes) {
         var4.clear();
      }
   }

   class="kw">public boolean isValid(int var1) {
      class="kw">return var1 >= 0 && var1 < this.probes.length;
   }

   class="kw">public boolean isAllProbesStopped() {
      for (FlatTimingProfiler.Probe var4 : this.probes) {
         if (var4.hasStart) {
            class="kw">return false;
         }
      }

      class="kw">return true;
   }

   @Nonnull
   class="kw">public String toString(@Nonnull String var1) {
      String var2 = var1 + " :";
      var2 = var2 + "\n\tSample Count : " + this.sampleCount;

      for (FlatTimingProfiler.Probe var6 : this.probes) {
         var2 = var2 + "\n\t\t" + var6.label + " :";
         var2 = var2 + "\n\t\t\tAverage : " + this.getAverage_ns(var6) + " ns / " + toString_ms(this.getAverage_ns(var6)) + " ms";
         var2 = var2 + "\n\t\t\tMax : " + var6.max + " ns / " + toString_ms(var6.max) + " ms";
         var2 = var2 + "\n\t\t\tMin : " + var6.min + " ns / " + toString_ms(var6.min) + " ms";
      }

      class="kw">return var2;
   }

   class="kw">private long getAverage_ns(@Nonnull FlatTimingProfiler.Probe var1) {
      class="kw">return var1.total / this.sampleCount;
   }

   class="kw">private class="kw">static class Probe {
      @Nonnull
      String label = "";
      boolean hasStart = false;
      long start = 0L;
      long total = 0L;
      long max = Long.MIN_VALUE;
      long min = Long.MAX_VALUE;

      class="kw">private Probe() {
      }

      void clear() {
         this.total = 0L;
         this.max = Long.MIN_VALUE;
         this.min = Long.MAX_VALUE;
      }
   }
}