158 lines
5.5 KiB
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-119106.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-119106.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);
|
|
}
|
|
}
|