Skip to content

Commit 3f6ee36

Browse files
Merge pull request #1462 from benjchristensen/merge-perf-fix
Merge Perf Fix: Re-enable fast-path
2 parents 82c634f + 4e38f63 commit 3f6ee36

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

rxjava-core/src/main/java/rx/internal/operators/OperatorMerge.java

+14-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,20 @@ private void handleNewSource(Observable<? extends T> t) {
136136
}
137137
MergeProducer<T> producerIfNeeded = null;
138138
// if we have received a request then we need to respect it, otherwise we fast-path
139-
if (mergeProducer.requested >= 0) {
139+
if (mergeProducer.requested != Long.MAX_VALUE) {
140+
/**
141+
* <pre> {@code
142+
* With this optimization:
143+
*
144+
* r.o.OperatorMergePerf.merge1SyncStreamOfN 1000 thrpt 5 57100.080 4686.331 ops/s
145+
* r.o.OperatorMergePerf.merge1SyncStreamOfN 1000000 thrpt 5 60.875 1.622 ops/s
146+
*
147+
* Without this optimization:
148+
*
149+
* r.o.OperatorMergePerf.merge1SyncStreamOfN 1000 thrpt 5 29863.945 1858.002 ops/s
150+
* r.o.OperatorMergePerf.merge1SyncStreamOfN 1000000 thrpt 5 30.516 1.087 ops/s
151+
* } </pre>
152+
*/
140153
producerIfNeeded = mergeProducer;
141154
}
142155
InnerSubscriber<T> i = new InnerSubscriber<T>(this, producerIfNeeded);

0 commit comments

Comments
 (0)