TimeDistributionRecorder class

Пакет: com.hypixel.hytale.common.benchmark

Файл: com/hypixel/hytale/common/benchmark/TimeDistributionRecorder.java

extends: TimeRecorder

Поля (14)

МодификаторыТипИмя
protected int minLogRange
int var1
var1
var1
StringBuilder var1
double var2
double var3
double var3
double var5
double var5
int var6
int var7
var7
var7

Методы (24)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Max seconds must be between 100 milli secs and 1 micro sec")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Min seconds must be between 100 milli secs and 1 micro sec")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Max seconds must be larger than min seconds")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("LogSteps must be between 2 and 10")
for for(int var7 = this.valueBins.length; var6 < var7; var6++)
for for(int var2 = this.valueBins.length; var1 < var2; var1++)
abstract for for(int var2 = 0; var2 < this.size()
abstract for for(int var3 = 0; var3 < this.size()
abstract for for(int var7 = 0; var7 < this.size()
public void formatValuesvoid formatValues(@Nonnull Formatter var1, long var2)
public void formatValuesvoid formatValues(@Nonnull Formatter var1, long var2, @Nonnull String var4)
public long getlong get(int var1)
if if(var1 < 1.0E-6 || var1 > 0.1)
if if(var3 < 1.0E-6 || var3 > 0.1)
if if(var1 <= var3)
if if(var5 >= 2 && var5 <= 10)
if if(var7 < 0)
if if(var1 < 0)
if if(var1 == this.valueBins.length - 1)
public double indexToTimedouble indexToTime(int var1)
public int sizeint size()
abstract this this(var1, var3, 5)
abstract this this(0.1, 1.0E-5)
public int timeToIndexint timeToIndex(double var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.common.benchmark;

class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import java.util.Formatter;
class="kw">import javax.annotation.Nonnull;

class="kw">public class TimeDistributionRecorder class="kw">extends TimeRecorder {
   class="kw">protected int minLogRange;
   class="kw">protected int maxLogRange;
   class="kw">protected int logSteps;
   class="kw">protected long[] valueBins;

   class="kw">public TimeDistributionRecorder(double var1, double var3, int var5) {
      if (var1 < 1.0E-6 || var1 > 0.1) {
         throw new IllegalArgumentException("Max seconds must be between 100 milli secs and 1 micro sec");
      }

      if (var3 < 1.0E-6 || var3 > 0.1) {
         throw new IllegalArgumentException("Min seconds must be between 100 milli secs and 1 micro sec");
      }

      if (var1 <= var3) {
         throw new IllegalArgumentException("Max seconds must be larger than min seconds");
      }

      if (var5 >= 2 && var5 <= 10) {
         this.maxLogRange = MathUtil.ceil(Math.log10(var1));
         this.minLogRange = MathUtil.floor(Math.log10(var3));
         this.logSteps = MathUtil.clamp(var5, 2, 10);
         this.valueBins = new long[(this.maxLogRange - this.minLogRange) * this.logSteps + 2];
         int var6 = 0;

         for (int var7 = this.valueBins.length; var6 < var7; var6++) {
            this.valueBins[var6] = 0L;
         }
      } else {
         throw new IllegalArgumentException("LogSteps must be between 2 and 10");
      }
   }

   class="kw">public TimeDistributionRecorder(double var1, double var3) {
      this(var1, var3, 5);
   }

   class="kw">public TimeDistributionRecorder() {
      this(0.1, 1.0E-5);
   }

   @Override
   class="kw">public void reset() {
      super.reset();
      int var1 = 0;

      for (int var2 = this.valueBins.length; var1 < var2; var1++) {
         this.valueBins[var1] = 0L;
      }
   }

   @Override
   class="kw">public double recordNanos(long var1) {
      double var3 = super.recordNanos(var1);
      this.valueBins[this.timeToIndex(var3)]++;
      class="kw">return var3;
   }

   class="kw">public int timeToIndex(double var1) {
      double var3 = Math.log10(var1);
      double var5 = (this.maxLogRange - var3) * this.logSteps;
      int var7 = MathUtil.ceil(var5);
      if (var7 < 0) {
         var7 = 0;
      } else if (var7 >= this.valueBins.length) {
         var7 = this.valueBins.length - 1;
      }

      class="kw">return var7;
   }

   class="kw">public double indexToTime(int var1) {
      if (var1 < 0) {
         var1 = 0;
      } else if (var1 >= this.valueBins.length) {
         var1 = this.valueBins.length - 1;
      }

      if (var1 == this.valueBins.length - 1) {
         class="kw">return 0.0;
      }

      double var2 = this.maxLogRange - (double)var1 / this.logSteps;
      class="kw">return Math.pow(10.0, var2);
   }

   class="kw">public int size() {
      class="kw">return this.valueBins.length;
   }

   class="kw">public long get(int var1) {
      class="kw">return this.valueBins[var1];
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      StringBuilder var1 = new StringBuilder(12 * this.size());
      var1.append("Cnt=").append(this.getCount());

      for (int var2 = 0; var2 < this.size(); var2++) {
         var1.append(' ').append(formatTime(this.indexToTime(var2))).append('=').append(this.get(var2));
      }

      class="kw">return super.toString() + " " + var1;
   }

   @Override
   class="kw">public void formatHeader(@Nonnull Formatter var1, @Nonnull String var2) {
      super.formatHeader(var1, var2);

      for (int var3 = 0; var3 < this.size(); var3++) {
         var1.format(var2, formatTime(this.indexToTime(var3)));
      }
   }

   @Override
   class="kw">public void formatValues(@Nonnull Formatter var1, @Nonnull String var2) {
      this.formatValues(var1, 0L, var2);
   }

   class="kw">public void formatValues(@Nonnull Formatter var1, long var2) {
      this.formatValues(var1, var2, "|%6.6s");
   }

   class="kw">public void formatValues(@Nonnull Formatter var1, long var2, @Nonnull String var4) {
      super.formatValues(var1, var4);
      double var5 = this.count > 0L && var2 > 1L ? (double)var2 / this.count : 1.0;

      for (int var7 = 0; var7 < this.size(); var7++) {
         var1.format(var4, (int)Math.round(this.get(var7) * var5));
      }
   }
}