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));
}
}
}