public PartitionAccessorRuntimeStatistics getRuntimeStatistics() {
long windowDurationNanos = windowTimer.getDuration();
windowTimer.restart();
long[] counters = countersWindow.getAsArrayAndSet(0, 0, 0, 0, 0);
long numRequestsInWindow = counters[0];
long numHitsInWindow = counters[1];
long responsesNumBytesInWindow = counters[2];
long numL1CacheHitsInWindow = counters[3];
long numL2CacheHitsInWindow = counters[4];
double throughput = 0;
double responseDataThroughput = 0;
if (windowDurationNanos != 0) {
throughput = numRequestsInWindow / (windowDurationNanos / 1000000000d);
responseDataThroughput = responsesNumBytesInWindow / (windowDurationNanos / 1000000000d);
}
return new PartitionAccessorRuntimeStatistics(numRequestsInWindow,
numHitsInWindow,
throughput,
responseDataThroughput,
numL1CacheHitsInWindow,
numL2CacheHitsInWindow,
reader.getCacheStatistics());
}