Java Reference
In-Depth Information
18
19
// perform calculcations separately
20
Instant separateStart = Instant.now();
long count = Arrays.stream(values).count();
long sum = Arrays.stream(values).sum();
long min = Arrays.stream(values).min().getAsLong();
long max = Arrays.stream(values).max().getAsLong();
double average = Arrays.stream(values).average().getAsDouble();
Instant separateEnd = Instant.now();
21
22
23
24
25
26
27
28
// display results
29
System.out.println( "Calculations performed separately" );
30
System.out.printf( " count: %,d%n" , count);
31
System.out.printf( " sum: %,d%n" , sum);
32
System.out.printf( " min: %,d%n" , min);
33
System.out.printf( " max: %,d%n" , max);
34
System.out.printf( " average: %f%n" , average);
35
System.out.printf( "Total time in milliseconds: %d%n%n" ,
36
Duration.between(separateStart, separateEnd).toMillis());
37
38
// time sum operation with sequential stream
39
LongStream stream1 = Arrays.stream(values);
40
System.out.println( "Calculating statistics on sequential stream" );
41
Instant sequentialStart = Instant.now();
LongSummaryStatistics results1 = stream1.summaryStatistics();
Instant sequentialEnd = Instant.now();
42
43
44
45
// display results
46
displayStatistics(results1);
47
System.out.printf( "Total time in milliseconds: %d%n%n" ,
48
Duration.between(sequentialStart, sequentialEnd).toMillis());
49
50
// time sum operation with parallel stream
51
LongStream stream2 = Arrays.stream(values).parallel();
52
System.out.println( "Calculating statistics on parallel stream" );
53
Instant parallelStart = Instant.now();
LongSummaryStatistics results2 = stream2.summaryStatistics();
Instant parallelEnd = Instant.now();
54
55
56
57
// display results
58
displayStatistics(results1);
59
System.out.printf( "Total time in milliseconds: %d%n%n" ,
60
Duration.between(parallelStart, parallelEnd).toMillis());
61
}
62
63
// display's LongSummaryStatistics values
64
private static void displayStatistics(LongSummaryStatistics stats)
65
{
66
System.out.println( "Statistics" );
67
System.out.printf( " count: %,d%n" , stats.getCount());
68
System.out.printf( " sum: %,d%n" , stats.getSum());
69
System.out.printf( " min: %,d%n" , stats.getMin());
70
System.out.printf( " max: %,d%n" , stats.getMax());
Fig. 23.29 | Comparing performance of sequential and parallel stream operations. (Part 2 of 3.)
Search WWH ::




Custom Search