@Override public Statistic<Double> ratioOf(Set<T> numerator, Set<T> denominator) { List<Set<T>> key = Arrays.<Set<T>> asList(EnumSet.copyOf(numerator), EnumSet.copyOf(denominator)); ExpiringStatistic<Double> existing = ratios.get(key); if (existing == null) { final Statistic<Double> numeratorRate = compound(numerator).rate(); final Statistic<Double> denominatorRate = compound(denominator).rate(); ExpiringStatistic<Double> created = new ExpiringStatistic(new ValueStatistic<Double>() { @Override public Double value() { return numeratorRate.value() / denominatorRate.value(); } }, executor, historySize, historyNanos); ExpiringStatistic<Double> racer = ratios.putIfAbsent(key, created); if (racer == null) { return created; } else { return racer; } } else { return existing; } }
@Override public Statistic<Double> ratioOf(Set<T> numerator, Set<T> denominator) { List<Set<T>> key = Arrays.<Set<T>> asList(EnumSet.copyOf(numerator), EnumSet.copyOf(denominator)); ExpiringStatistic<Double> existing = ratios.get(key); if (existing == null) { final Statistic<Double> numeratorRate = compound(numerator).rate(); final Statistic<Double> denominatorRate = compound(denominator).rate(); ExpiringStatistic<Double> created = new ExpiringStatistic(new ValueStatistic<Double>() { @Override public Double value() { return numeratorRate.value() / denominatorRate.value(); } }, executor, historySize, historyNanos); ExpiringStatistic<Double> racer = ratios.putIfAbsent(key, created); if (racer == null) { return created; } else { return racer; } } else { return existing; } }
@Override public Statistic<Double> ratioOf(Set<T> numerator, Set<T> denominator) { List<Set<T>> key = Arrays.<Set<T>> asList(EnumSet.copyOf(numerator), EnumSet.copyOf(denominator)); ExpiringStatistic<Double> existing = ratios.get(key); if (existing == null) { final Statistic<Double> numeratorRate = compound(numerator).rate(); final Statistic<Double> denominatorRate = compound(denominator).rate(); ExpiringStatistic<Double> created = new ExpiringStatistic(new ValueStatistic<Double>() { @Override public Double value() { return numeratorRate.value() / denominatorRate.value(); } }, executor, historySize, historyNanos); ExpiringStatistic<Double> racer = ratios.putIfAbsent(key, created); if (racer == null) { return created; } else { return racer; } } else { return existing; } }