@@ -31,7 +31,12 @@ public void oneStreamOfNthatMergesIn1(final InputMillion input) throws Interrupt
31
31
Observable <Observable <Integer >> os = Observable .range (1 , input .size ).map (Observable ::just );
32
32
LatchedObserver <Integer > o = input .newLatchedObserver ();
33
33
Observable .merge (os ).subscribe (o );
34
- o .latch .await ();
34
+
35
+ if (input .size == 1 ) {
36
+ while (o .latch .getCount () != 0 );
37
+ } else {
38
+ o .latch .await ();
39
+ }
35
40
}
36
41
37
42
// flatMap
@@ -42,7 +47,12 @@ public void merge1SyncStreamOfN(final InputMillion input) throws InterruptedExce
42
47
});
43
48
LatchedObserver <Integer > o = input .newLatchedObserver ();
44
49
Observable .merge (os ).subscribe (o );
45
- o .latch .await ();
50
+
51
+ if (input .size == 1 ) {
52
+ while (o .latch .getCount () != 0 );
53
+ } else {
54
+ o .latch .await ();
55
+ }
46
56
}
47
57
48
58
@ Benchmark
@@ -52,7 +62,11 @@ public void mergeNSyncStreamsOfN(final InputThousand input) throws InterruptedEx
52
62
});
53
63
LatchedObserver <Integer > o = input .newLatchedObserver ();
54
64
Observable .merge (os ).subscribe (o );
55
- o .latch .await ();
65
+ if (input .size == 1 ) {
66
+ while (o .latch .getCount () != 0 );
67
+ } else {
68
+ o .latch .await ();
69
+ }
56
70
}
57
71
58
72
@ Benchmark
@@ -62,22 +76,34 @@ public void mergeNAsyncStreamsOfN(final InputThousand input) throws InterruptedE
62
76
});
63
77
LatchedObserver <Integer > o = input .newLatchedObserver ();
64
78
Observable .merge (os ).subscribe (o );
65
- o .latch .await ();
79
+ if (input .size == 1 ) {
80
+ while (o .latch .getCount () != 0 );
81
+ } else {
82
+ o .latch .await ();
83
+ }
66
84
}
67
85
68
86
@ Benchmark
69
87
public void mergeTwoAsyncStreamsOfN (final InputThousand input ) throws InterruptedException {
70
88
LatchedObserver <Integer > o = input .newLatchedObserver ();
71
89
Observable <Integer > ob = Observable .range (0 , input .size ).subscribeOn (Schedulers .computation ());
72
90
Observable .merge (ob , ob ).subscribe (o );
73
- o .latch .await ();
91
+ if (input .size == 1 ) {
92
+ while (o .latch .getCount () != 0 );
93
+ } else {
94
+ o .latch .await ();
95
+ }
74
96
}
75
97
76
98
@ Benchmark
77
99
public void mergeNSyncStreamsOf1 (final InputForMergeN input ) throws InterruptedException {
78
100
LatchedObserver <Integer > o = input .newLatchedObserver ();
79
101
Observable .merge (input .observables ).subscribe (o );
80
- o .latch .await ();
102
+ if (input .size == 1 ) {
103
+ while (o .latch .getCount () != 0 );
104
+ } else {
105
+ o .latch .await ();
106
+ }
81
107
}
82
108
83
109
@ State (Scope .Thread )
0 commit comments