public static Collection<Double> currentConsumptionRateByQuery() { return collectorMap.values() .stream() .filter(collector -> collector.getGroupId() != null) .collect( Collectors.groupingBy( MetricCollector::getGroupId, Collectors.summingDouble( m -> m.aggregateStat(ConsumerCollector.CONSUMER_MESSAGES_PER_SEC, false) ) ) ) .values(); }
@Benchmark public Map<String, Double> sumByCategory_serial_lazy_jdk() { return this.positions.getJdkPositions().stream().collect( Collectors.groupingBy( Position::getCategory, Collectors.summingDouble(Position::getMarketValue))); }
@Benchmark public Map<Product, Double> sumByProduct_serial_lazy_jdk() { return this.positions.getJdkPositions().stream().collect( Collectors.groupingBy( Position::getProduct, Collectors.summingDouble(Position::getMarketValue))); }
@Benchmark public Map<Account, Double> sumByAccount_serial_lazy_jdk() { return this.positions.getJdkPositions().stream().collect( Collectors.groupingBy( Position::getAccount, Collectors.summingDouble(Position::getMarketValue))); }
@GenerateMicroBenchmark // BEGIN serial public Map<Integer, Double> serialDiceRolls() { double fraction = 1.0 / N; return IntStream.range(0, N) .mapToObj(twoDiceThrows()) .collect(groupingBy(side -> side, summingDouble(n -> fraction))); } // END serial
@GenerateMicroBenchmark // BEGIN parallel public Map<Integer, Double> parallelDiceRolls() { double fraction = 1.0 / N; return IntStream.range(0, N) // <1> .parallel() // <2> .mapToObj(twoDiceThrows()) // <3> .collect(groupingBy(side -> side, // <4> summingDouble(n -> fraction))); // <5> } // END parallel
@Benchmark public Map<String, Double> sumByCategory_parallel_lazy_streams_gsc() { return this.positions.getGscPositions().parallelStream().collect( Collectors.groupingBy( Position::getCategory, Collectors.summingDouble(Position::getMarketValue))); }
@Benchmark public Map<Account, Double> sumByAccount_parallel_lazy_streams_gsc() { return this.positions.getGscPositions().parallelStream().collect( Collectors.groupingBy( Position::getAccount, Collectors.summingDouble(Position::getMarketValue))); }
@Benchmark public Map<String, Double> sumByCategory_parallel_lazy_jdk() { return this.positions.getJdkPositions().parallelStream().collect( Collectors.groupingBy( Position::getCategory, Collectors.summingDouble(Position::getMarketValue))); }
@Benchmark public Map<String, Double> sumByCategory_serial_lazy_streams_gsc() { return this.positions.getGscPositions().stream().collect( Collectors.groupingBy( Position::getCategory, Collectors.summingDouble(Position::getMarketValue))); }
@Benchmark public Map<Product, Double> sumByProduct_serial_lazy_streams_gsc() { return this.positions.getGscPositions().stream().collect( Collectors.groupingBy( Position::getProduct, Collectors.summingDouble(Position::getMarketValue))); }
@Benchmark public Map<Product, Double> sumByProduct_parallel_lazy_streams_gsc() { return this.positions.getGscPositions().parallelStream().collect( Collectors.groupingBy( Position::getProduct, Collectors.summingDouble(Position::getMarketValue))); }
@Benchmark public Map<Account, Double> sumByAccount_parallel_lazy_jdk() { return this.positions.getJdkPositions().parallelStream().collect( Collectors.groupingBy( Position::getAccount, Collectors.summingDouble(Position::getMarketValue))); }
@Benchmark public Map<Account, Double> sumByAccount_serial_lazy_streams_gsc() { return this.positions.getGscPositions().stream().collect( Collectors.groupingBy( Position::getAccount, Collectors.summingDouble(Position::getMarketValue))); }
@Benchmark public Map<Product, Double> sumByProduct_parallel_lazy_jdk() { return this.positions.getJdkPositions().parallelStream().collect( Collectors.groupingBy( Position::getProduct, Collectors.summingDouble(Position::getMarketValue))); }
/** * Aggregator that returns the sum of all heuristic results. * * @param values heuristic results. * @return the sum. */ public static double sum(final Collection<Double> values) { return values.stream().collect(Collectors.summingDouble((d) -> d)); }
@Override public double sumDouble(ToDoubleFunction<? super T> function) { return collect(Collectors.summingDouble(function)); }
public Collection<Metric<Double>> getAggregateMetrics() { return getInstances().stream().map(instance -> instance.getMetrics()).flatMap(metrics -> metrics.stream()) .filter(metric -> metric.getName().matches("integration\\.channel\\.(\\w*)\\.send\\.mean")) .collect(Collectors.groupingBy(Metric::getName, Collectors.summingDouble(Metric::getValue))).entrySet() .stream().map(entry -> new Metric<Double>(entry.getKey(), entry.getValue(), new Date())) .collect(Collectors.toList()); }
private double effectiveNumberOfBases(Histogram<?> observations) { double totalObservations = observations.getSumOfValues(); // Convert to log base 4 so that the entropy is now a measure // of the effective number of DNA bases. If we used log(2.0) // our result would be in bits. double entropyBaseE = observations.values().stream().collect(Collectors.summingDouble( v -> {double p = v.getValue() / totalObservations; return -p * Math.log(p);})); return entropyBaseE / MathUtil.LOG_4_BASE_E; } }
private double effectiveNumberOfBases(Histogram<?> observations) { double totalObservations = observations.getSumOfValues(); // Convert to log base 4 so that the entropy is now a measure // of the effective number of DNA bases. If we used log(2.0) // our result would be in bits. double entropyBaseE = observations.values().stream().collect(Collectors.summingDouble( v -> {double p = v.getValue() / totalObservations; return -p * Math.log(p);})); return entropyBaseE / MathUtil.LOG_4_BASE_E; } }