Skip to content

Commit 42bcced

Browse files
luisgabrielkwonoj
authored andcommitted
perf(mergeMapTo): remove tryCatch/errorObject (~2x improvement)
Before: | RxJS 4.0.7 | RxJS 5.0.0-beta.1 | factor | % improved ------------------------------------------------------------------------------------------------- mergemapto-resultselector - immediate | 811 (±1.50%) | 5,376 (±1.10%) | 6.63x | 562.7% mergemapto-scalar - immediate | 6,110 (±0.45%) | 113,487 (±0.91%) | 18.58x | 1,757.5% mergemapto - immediate | 1,439 (±0.95%) | 17,017 (±0.29%) | 11.83x | 1,082.8% mergemapto-resultselector | 369 (±0.43%) | 1,957 (±0.45%) | 5.30x | 429.7% mergemapto-scalar | 3,740 (±0.45%) | 66,278 (±1.18%) | 17.72x | 1,672.3% mergemapto | 490 (±0.39%) | 3,685 (±0.44%) | 7.52x | 651.7% After: | RxJS 4.0.7 | RxJS 5.0.0-beta.1 | factor | % improved ------------------------------------------------------------------------------------------------- mergemapto-resultselector - immediate | 810 (±1.70%) | 11,428 (±3.41%) | 14.11x | 1,310.6% mergemapto-scalar - immediate | 6,401 (±2.48%) | 117,259 (±2.09%) | 18.32x | 1,731.9% mergemapto - immediate | 1,452 (±0.44%) | 17,406 (±0.35%) | 11.99x | 1,098.9% mergemapto-resultselector | 383 (±1.24%) | 3,288 (±0.42%) | 8.58x | 757.7% mergemapto-scalar | 3,837 (±0.57%) | 62,294 (±3.05%) | 16.23x | 1,523.3% mergemapto | 525 (±2.37%) | 3,795 (±0.79%) | 7.23x | 622.6%
1 parent 8e5508d commit 42bcced

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

src/operator/mergeMapTo.ts

+15-8
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ import {Observable} from '../Observable';
22
import {Operator} from '../Operator';
33
import {PartialObserver} from '../Observer';
44
import {Subscriber} from '../Subscriber';
5-
import {tryCatch} from '../util/tryCatch';
6-
import {errorObject} from '../util/errorObject';
75
import {Subscription} from '../Subscription';
86
import {OuterSubscriber} from '../OuterSubscriber';
97
import {InnerSubscriber} from '../InnerSubscriber';
@@ -73,17 +71,26 @@ export class MergeMapToSubscriber<T, R, R2> extends OuterSubscriber<T, R> {
7371
innerSub: InnerSubscriber<T, R>): void {
7472
const { resultSelector, destination } = this;
7573
if (resultSelector) {
76-
const result = tryCatch(resultSelector)(outerValue, innerValue, outerIndex, innerIndex);
77-
if (result === errorObject) {
78-
destination.error(errorObject.e);
79-
} else {
80-
destination.next(result);
81-
}
74+
this.trySelectResult(outerValue, innerValue, outerIndex, innerIndex);
8275
} else {
8376
destination.next(innerValue);
8477
}
8578
}
8679

80+
private trySelectResult(outerValue: T, innerValue: R,
81+
outerIndex: number, innerIndex: number): void {
82+
const { resultSelector, destination } = this;
83+
let result: R2;
84+
try {
85+
result = resultSelector(outerValue, innerValue, outerIndex, innerIndex);
86+
} catch (err) {
87+
destination.error(err);
88+
return;
89+
}
90+
91+
destination.next(result);
92+
}
93+
8794
notifyError(err: any): void {
8895
this.destination.error(err);
8996
}

0 commit comments

Comments
 (0)