package org.gridkit.jvmtool.stacktrace.analytics;
import org.gridkit.jvmtool.stacktrace.ThreadSnapshot;
class PeriodCHMAggregatorFactory implements ThreadDumpAggregator, ThreadDumpAggregatorFactory {
@Override
public ThreadDumpAggregator newInstance() {
return new PeriodCHMAggregatorFactory();
}
long count = 0;
double total = 0;
double totalSquares = 0;
long lastTimestamp = Long.MAX_VALUE;
@Override
public void aggregate(ThreadSnapshot threadInfo) {
if (threadInfo.timestamp() > lastTimestamp) {
double delta = 0.001d * (threadInfo.timestamp() - lastTimestamp);
total += delta;
totalSquares += delta * delta;
count += 1;
}
lastTimestamp = threadInfo.timestamp();
}
@Override
public Object info() {
if (count > 0) {
return totalSquares / total;
}
else {
return Double.NaN;
}
}
}