FlatTimingProfiler class

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

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

Поля (13)

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

Методы (20)

МодификаторыВозвратСигнатура
private Probeprivate Probe()
public void clearvoid clear()
void clearvoid clear()
for for(int var2 = 0; var2 < var1; var2++)
for for(FlatTimingProfiler.Probe var4 : this.probes)
for for(FlatTimingProfiler.Probe var4 : this.probes)
for for(FlatTimingProfiler.Probe var6 : this.probes)
public long getAverage_nslong getAverage_ns(int var1)
private long getAverage_nslong getAverage_ns(@Nonnull FlatTimingProfiler.Probe var1)
public long getMax_nslong getMax_ns(int var1)
public long getMin_nslong getMin_ns(int var1)
public long getSampleCountlong getSampleCount()
public long getTotal_nslong getTotal_ns(int var1)
if if(var4.hasStart)
public boolean isAllProbesStoppedboolean isAllProbesStopped()
public boolean isValidboolean isValid(int var1)
public void savevoid save()
public void setProbeLabelvoid setProbeLabel(int var1, @Nonnull String var2)
public void startvoid start(int var1)
public void stopvoid stop(int var1)

Исходный код

Показать/скрыть
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;
      }
   }
}