discord-jadx/app/src/main/java/lombok/core/debug/HistogramTracker.java

158 lines
5.5 KiB
Java

package lombok.core.debug;
import java.io.PrintStream;
import java.util.GregorianCalendar;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicStampedReference;
/* loaded from: com.discord-118108.apk:lombok/core/debug/HistogramTracker.SCL.lombok */
public class HistogramTracker {
private static final long[] RANGES = {250001, 500001, 1000001, 2000001, 4000001, 8000001, 16000001, 32000001, 64000001, 128000001, 256000001, 512000001, 1024000001, 2048000001, 10000000001L};
private static final long REPORT_WINDOW = 60000;
private final String category;
private final AtomicStampedReference<long[]> bars;
private final AtomicBoolean addedSysHook;
private final PrintStream out;
/* renamed from: lombok.core.debug.HistogramTracker$1 reason: invalid class name */
/* loaded from: com.discord-118108.apk:lombok/core/debug/HistogramTracker$1.SCL.lombok */
class AnonymousClass1 extends Thread {
AnonymousClass1(String str) {
super(str);
}
@Override // java.lang.Thread, java.lang.Runnable
public void run() {
int[] iArr = new int[1];
HistogramTracker.access$1(HistogramTracker.this, iArr[0], (long[]) HistogramTracker.access$0(HistogramTracker.this).get(iArr));
}
}
public HistogramTracker(String str) {
this.bars = new AtomicStampedReference<>(new long[RANGES.length + 2], 0);
this.addedSysHook = new AtomicBoolean(false);
this.category = str;
this.out = null;
printInit();
}
public HistogramTracker(String str, PrintStream printStream) {
this.bars = new AtomicStampedReference<>(new long[RANGES.length + 2], 0);
this.addedSysHook = new AtomicBoolean(false);
this.category = str;
this.out = printStream;
printInit();
}
private void printInit() {
if (this.category == null) {
if (this.out == null) {
ProblemReporter.info("Initialized histogram", null);
} else {
this.out.println("Initialized histogram");
}
} else if (this.out == null) {
ProblemReporter.info(String.format("Initialized histogram tracker for '%s'", this.category), null);
} else {
this.out.printf("Initialized histogram tracker for '%s'%n", this.category);
}
}
public long start() {
return System.nanoTime();
}
public void end(long j) {
long[] jArr;
if (!this.addedSysHook.getAndSet(true)) {
Runtime.getRuntime().addShutdownHook(new AnonymousClass1("Histogram Printer"));
}
long nanoTime = System.nanoTime();
long currentTimeMillis = System.currentTimeMillis();
long j2 = nanoTime - j;
if (j2 < 0) {
j2 = 0;
}
int i = (int) (currentTimeMillis / 60000);
int[] iArr = new int[1];
long[] jArr2 = this.bars.get(iArr);
if (iArr[0] != i) {
printReport(iArr[0], jArr2);
jArr = new long[RANGES.length + 2];
if (!this.bars.compareAndSet(jArr2, jArr, iArr[0], i)) {
jArr = this.bars.get(iArr);
}
} else {
jArr = jArr2;
}
int length = RANGES.length + 1;
jArr[length] = jArr[length] + j2;
for (int i2 = 0; i2 < RANGES.length; i2++) {
if (j2 < RANGES[i2]) {
jArr[i2] = jArr[i2] + 1;
return;
}
}
int length2 = RANGES.length;
jArr[length2] = jArr[length2] + 1;
}
private void printReport(int i, long[] jArr) {
StringBuilder sb = new StringBuilder();
if (this.category != null) {
sb.append(this.category).append(" ");
}
sb.append("[");
GregorianCalendar gregorianCalendar = new GregorianCalendar();
gregorianCalendar.setTimeInMillis(i * 60000);
int i2 = gregorianCalendar.get(11);
int i3 = gregorianCalendar.get(12);
if (i2 < 10) {
sb.append('0');
}
sb.append(i2).append(":");
if (i3 < 10) {
sb.append('0');
}
sb.append(i3).append("] {");
long j = jArr[RANGES.length];
int i4 = 0;
int length = sb.length();
for (int i5 = 0; i5 < RANGES.length; i5++) {
j += jArr[i5];
sb.append(jArr[i5]);
if (jArr[i5] != 0) {
length = sb.length();
}
sb.append(" ");
i4++;
if (i4 == 3) {
sb.append("-- ");
}
if (i4 == 9) {
sb.append("-- ");
}
}
if (j != 0) {
sb.setLength(length);
double d = jArr[RANGES.length + 1] / 1000000.0d;
if (jArr[RANGES.length] > 0) {
sb.append(" -- ").append(jArr[RANGES.length]);
}
sb.append("} total calls: ").append(j).append(" total time (millis): ").append((int) (d + 0.5d));
if (this.out == null) {
ProblemReporter.info(sb.toString(), null);
} else {
this.out.println(sb.toString());
}
}
}
static /* synthetic */ AtomicStampedReference access$0(HistogramTracker histogramTracker) {
return histogramTracker.bars;
}
static /* synthetic */ void access$1(HistogramTracker histogramTracker, int i, long[] jArr) {
histogramTracker.printReport(i, jArr);
}
}