public void track(double timestamp, int msgCount) { long currentTimeMillis = 0; timeBucketsRWLock.readLock().lock(); try { TimeBucketMetadata timeBucket = getTimeBucket(timestamp); timeBucket.msgCount.addAndGet(msgCount); currentTimeMillis = System.currentTimeMillis(); timeBucket.lastMessageTimestampSeenInSec = timestamp; double latency = currentTimeMillis - (timestamp * 1000); for (int i = 0; i < msgCount; i++) { timeBucket.latencyStats.addValue(latency); } } finally { timeBucketsRWLock.readLock().unlock(); } if (timeBucketCount.get() >= reportFreqBucketCount || currentTimeMillis > nextReportTime.get()) { report(); } }
private void calculate(TableColumn c) { SynchronizedDescriptiveStatistics statistics = new SynchronizedDescriptiveStatistics(); statistics.setWindowSize(-1); for (TableRow r : c.getTable().getRows()) { if(r.get(c.getColumnIndex()) != null) statistics.addValue((double) r.get(c.getColumnIndex())); } Set<Double> setofDistinctValues = new HashSet<>(); for (double value : statistics.getValues()) { setofDistinctValues.add(value); } this.setVariance(statistics.getVariance()); this.setSkewness(statistics.getSkewness()); this.setKurtosis(statistics.getKurtosis()); this.setDistinctValues((double) setofDistinctValues.size()); this.setStandardDeviation(statistics.getStandardDeviation()); this.setAverage(statistics.getMean()); }