X Tutup
Skip to content

Commit 91df13a

Browse files
author
조우현
committed
포크 조인풀 테스트를 위한 조정
1 parent 426a7d9 commit 91df13a

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

src/main/java/lambdasinaction/chap7/ForkJoinSumCalculator.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
package lambdasinaction.chap7;
22

3-
import java.util.concurrent.RecursiveTask;
3+
import java.util.concurrent.ForkJoinPool;
44
import java.util.concurrent.ForkJoinTask;
5+
import java.util.concurrent.RecursiveTask;
56
import java.util.stream.LongStream;
67

78
import static lambdasinaction.chap7.ParallelStreamsHarness.FORK_JOIN_POOL;
89

910
public class ForkJoinSumCalculator extends RecursiveTask<Long> {
1011

1112
//이 값 이하의 서브태스크는 더이상 분할할 수 없다. (threshold : 임계치)
12-
public static final long THRESHOLD = 10_000;
13+
public static final long THRESHOLD = 10;
1314

1415
private final long[] numbers; // 더할 숫자 배열
1516
private final int start; //이 서브태스크에서 처리할 배열의 초기 위치
@@ -64,6 +65,9 @@ private long computeSequentially() {
6465
for (int i = start; i < end; i++) {
6566
sum += numbers[i];
6667
}
68+
69+
// long sum = Arrays.stream(numbers, start, end).reduce(0, (a, b) -> a + b);
70+
System.out.println(Thread.currentThread().getName() + ", start=" + start + ", end=" + end + ", sum=" + sum);
6771
return sum;
6872
}
6973

@@ -72,4 +76,13 @@ public static long forkJoinSum(long n) {
7276
ForkJoinTask<Long> task = new ForkJoinSumCalculator(numbers);
7377
return FORK_JOIN_POOL.invoke(task);
7478
}
79+
80+
//테스트를 위한 메인
81+
public static void main (String[] args) throws Exception {
82+
long[] values = LongStream.rangeClosed(1, 20).toArray();
83+
ForkJoinTask<Long> task = new ForkJoinSumCalculator(values);
84+
long totalSum = new ForkJoinPool().commonPool().invoke(task);
85+
System.out.println("Total sum: " + totalSum);
86+
}
87+
7588
}

src/main/java/lambdasinaction/chap7/ParallelStreamsHarness.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@ public class ParallelStreamsHarness {
88
public static final ForkJoinPool FORK_JOIN_POOL = new ForkJoinPool();
99

1010
public static void main(String[] args) {
11-
System.out.println("Iterative Sum done in: " + measurePerf(ParallelStreams::iterativeSum, 10_000_000L) + " msecs");
12-
System.out.println("Sequential Sum done in: " + measurePerf(ParallelStreams::sequentialSum, 10_000_000L) + " msecs");
13-
System.out.println("Parallel forkJoinSum done in: " + measurePerf(ParallelStreams::parallelSum, 10_000_000L) + " msecs" );
14-
System.out.println("Range forkJoinSum done in: " + measurePerf(ParallelStreams::rangedSum, 10_000_000L) + " msecs");
15-
System.out.println("Parallel range forkJoinSum done in: " + measurePerf(ParallelStreams::parallelRangedSum, 10_000_000L) + " msecs" );
16-
System.out.println("ForkJoin sum done in: " + measurePerf(ForkJoinSumCalculator::forkJoinSum, 10_000_000L) + " msecs" );
17-
System.out.println("SideEffect sum done in: " + measurePerf(ParallelStreams::sideEffectSum, 10_000_000L) + " msecs" );
18-
System.out.println("SideEffect prallel sum done in: " + measurePerf(ParallelStreams::sideEffectParallelSum, 10_000_000L) + " msecs" );
11+
// System.out.println("Iterative Sum done in: " + measurePerf(ParallelStreams::iterativeSum, 10_000_000L) + " msecs");
12+
// System.out.println("Sequential Sum done in: " + measurePerf(ParallelStreams::sequentialSum, 10_000_000L) + " msecs");
13+
// System.out.println("Parallel forkJoinSum done in: " + measurePerf(ParallelStreams::parallelSum, 10_000_000L) + " msecs" );
14+
// System.out.println("Range forkJoinSum done in: " + measurePerf(ParallelStreams::rangedSum, 10_000_000L) + " msecs");
15+
// System.out.println("Parallel range forkJoinSum done in: " + measurePerf(ParallelStreams::parallelRangedSum, 10_000_000L) + " msecs" );
16+
System.out.println("ForkJoin sum done in: " + measurePerf(ForkJoinSumCalculator::forkJoinSum, 80L) + " msecs" );
17+
// System.out.println("ForkJoin sum done in: " + measurePerf(ForkJoinSumCalculator::forkJoinSum, 10_000_000L) + " msecs" );
18+
// System.out.println("SideEffect sum done in: " + measurePerf(ParallelStreams::sideEffectSum, 10_000_000L) + " msecs" );
19+
// System.out.println("SideEffect prallel sum done in: " + measurePerf(ParallelStreams::sideEffectParallelSum, 10_000_000L) + " msecs" );
1920
}
2021

2122
public static <T, R> long measurePerf(Function<T, R> f, T input) {

0 commit comments

Comments
 (0)
X Tutup