Skip to content
This repository was archived by the owner on Apr 20, 2018. It is now read-only.

Commit 81b99f4

Browse files
Updating perf for Issue #519
1 parent 6c4fe94 commit 81b99f4

45 files changed

Lines changed: 1429 additions & 5938 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Gruntfile.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ var browsers = [{
100100
'src/core/linq/observable/defer.js',
101101
'src/core/linq/observable/empty.js',
102102
'src/core/linq/observable/from.js',
103-
'src/core/linq/observable/fromarray.js',
103+
'src/core/perf/operators/fromarray.js',
104104
'src/core/linq/observable/generate.js',
105-
'src/core/linq/observable/of.js',
105+
'src/core/perf/operators/of.js',
106106
'src/core/linq/observable/never.js',
107107
'src/core/linq/observable/pairs.js',
108108
'src/core/linq/observable/range.js',
@@ -388,9 +388,9 @@ var browsers = [{
388388
'src/core/linq/observable/defer.js',
389389
'src/core/linq/observable/empty.js',
390390
'src/core/linq/observable/from.js',
391-
'src/core/linq/observable/fromarray.js',
391+
'src/core/perf/operators/fromarray.js',
392392
'src/core/linq/observable/generate.js',
393-
'src/core/linq/observable/of.js',
393+
'src/core/perf/operators/of.js',
394394
'src/core/linq/observable/never.js',
395395
'src/core/linq/observable/pairs.js',
396396
'src/core/linq/observable/range.js',
@@ -676,10 +676,10 @@ var browsers = [{
676676
'src/core/linq/observable/defer.js',
677677
'src/core/linq/observable/empty.js',
678678
'src/core/linq/observable/from.js',
679-
'src/core/linq/observable/fromarray.js',
679+
'src/core/perf/operators/fromarray.js',
680680
'src/core/linq/observable/generate.js',
681681
'src/core/linq/observable/never.js',
682-
'src/core/linq/observable/of.js',
682+
'src/core/perf/operators/of.js',
683683
'src/core/linq/observable/pairs.js',
684684
'src/core/linq/observable/range.js',
685685
'src/core/linq/observable/repeat.js',
@@ -820,10 +820,10 @@ var browsers = [{
820820
'src/core/linq/observable/defer.js',
821821
'src/core/linq/observable/empty.js',
822822
'src/core/linq/observable/from.js',
823-
'src/core/linq/observable/fromarray.js',
823+
'src/core/perf/operators/fromarray.js',
824824
'src/core/linq/observable/generate.js',
825825
'src/core/linq/observable/never.js',
826-
'src/core/linq/observable/of.js',
826+
'src/core/perf/operators/of.js',
827827
'src/core/linq/observable/pairs.js',
828828
'src/core/linq/observable/range.js',
829829
'src/core/linq/observable/repeat.js',
@@ -954,9 +954,9 @@ var browsers = [{
954954
'src/core/linq/observable/defer.js',
955955
'src/core/linq/observable/empty.js',
956956
'src/core/linq/observable/from.js',
957-
'src/core/linq/observable/fromarray.js',
957+
'src/core/perf/operators/fromarray.js',
958958
'src/core/linq/observable/never.js',
959-
'src/core/linq/observable/of.js',
959+
'src/core/perf/operators/of.js',
960960
'src/core/linq/observable/pairs.js',
961961
'src/core/linq/observable/range.js',
962962
'src/core/linq/observable/repeat.js',
@@ -1119,9 +1119,9 @@ var browsers = [{
11191119
'src/core/linq/observable/defer.js',
11201120
'src/core/linq/observable/empty.js',
11211121
'src/core/linq/observable/from.js',
1122-
'src/core/linq/observable/fromarray.js',
1122+
'src/core/perf/operators/fromarray.js',
11231123
'src/core/linq/observable/never.js',
1124-
'src/core/linq/observable/of.js',
1124+
'src/core/perf/operators/of.js',
11251125
'src/core/linq/observable/pairs.js',
11261126
'src/core/linq/observable/range.js',
11271127
'src/core/linq/observable/repeat.js',

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"dist/rx.async.map",
2222
"dist/rx.async.min.js",
2323
"dist/rx.async.compat.js",
24-
"dist/rx.async.map.js",
24+
"dist/rx.async.compat.map.js",
2525
"dist/rx.async.compat.min.js",
2626
"dist/rx.backpressure.js",
2727
"dist/rx.backpressure.map",

component.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,61 @@
22
"name": "rx",
33
"scripts": [
44
"dist/rx.aggregates.js",
5+
"dist/rx.aggregates.map",
56
"dist/rx.aggregates.min.js",
67
"dist/rx.all.compat.js",
8+
"dist/rx.all.compat.map",
79
"dist/rx.all.compat.min.js",
810
"dist/rx.all.js",
911
"dist/rx.all.min.js",
12+
"dist/rx.all.map",
1013
"dist/rx.async.js",
14+
"dist/rx.async.map",
1115
"dist/rx.async.min.js",
1216
"dist/rx.async.compat.js",
17+
"dist/rx.async.compat.map",
1318
"dist/rx.async.compat.min.js",
1419
"dist/rx.backpressure.js",
20+
"dist/rx.backpressure.map",
1521
"dist/rx.backpressure.min.js",
1622
"dist/rx.backpressure.js",
23+
"dist/rx.backpressure.map",
1724
"dist/rx.backpressure.min.js",
1825
"dist/rx.binding.js",
26+
"dist/rx.binding.map",
1927
"dist/rx.binding.min.js",
2028
"dist/rx.coincidence.js",
29+
"dist/rx.coincidence.map",
2130
"dist/rx.coincidence.min.js",
2231
"dist/rx.js",
32+
"dist/rx.map",
2333
"dist/rx.min.js",
2434
"dist/rx.compat.js",
35+
"dist/rx.compat.map",
2536
"dist/rx.compat.min.js",
2637
"dist/rx.experimental.js",
38+
"dist/rx.experimental.map",
2739
"dist/rx.experimental.min.js",
2840
"dist/rx.joinpatterns.js",
41+
"dist/rx.joinpatterns.map",
2942
"dist/rx.joinpatterns.min.js",
3043
"dist/rx.lite.js",
44+
"dist/rx.lite.map",
3145
"dist/rx.lite.min.js",
3246
"dist/rx.lite.compat.js",
47+
"dist/rx.lite.compat.map",
3348
"dist/rx.lite.compat.min.js",
3449
"dist/rx.lite.extras.js",
50+
"dist/rx.lite.extras.map",
3551
"dist/rx.lite.extras.min.js",
3652
"dist/rx.testing.js",
53+
"dist/rx.testing.map",
3754
"dist/rx.testing.min.js",
3855
"dist/rx.time.js",
56+
"dist/rx.time.map",
3957
"dist/rx.time.min.js",
4058
"dist/rx.virtualtime.js",
59+
"dist/rx.virtualtime.map",
4160
"dist/rx.virtualtime.min.js"
4261
]
4362
}

dist/rx.all.compat.js

Lines changed: 78 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -2754,26 +2754,54 @@
27542754
});
27552755
};
27562756

2757+
var FromArrayObservable = (function(__super__) {
2758+
inherits(FromArrayObservable, __super__);
2759+
function FromArrayObservable(args, scheduler) {
2760+
this.args = args;
2761+
this.scheduler = scheduler || currentThreadScheduler;
2762+
__super__.call(this);
2763+
}
2764+
2765+
FromArrayObservable.prototype.subscribeCore = function (observer) {
2766+
var sink = new FromArraySink(observer, this);
2767+
return sink.run();
2768+
};
2769+
2770+
return FromArrayObservable;
2771+
}(ObservableBase));
2772+
2773+
var FromArraySink = (function () {
2774+
function FromArraySink(observer, parent) {
2775+
this.observer = observer;
2776+
this.parent = parent;
2777+
}
2778+
2779+
function loopRecursive(state, recurse) {
2780+
if (state.i < state.len) {
2781+
state.observer.onNext(state.args[state.i++]);
2782+
recurse(state);
2783+
} else {
2784+
state.observer.onCompleted();
2785+
}
2786+
}
2787+
2788+
FromArraySink.prototype.run = function () {
2789+
return this.parent.scheduler.scheduleRecursiveWithState(
2790+
{i: 0, args: this.parent.args, len: this.parent.args.length, observer: this.observer },
2791+
loopRecursive);
2792+
};
2793+
2794+
return FromArraySink;
2795+
}());
2796+
27572797
/**
2758-
* Converts an array to an observable sequence, using an optional scheduler to enumerate the array.
2759-
* @deprecated use Observable.from or Observable.of
2760-
* @param {Scheduler} [scheduler] Scheduler to run the enumeration of the input sequence on.
2761-
* @returns {Observable} The observable sequence whose elements are pulled from the given enumerable sequence.
2762-
*/
2798+
* Converts an array to an observable sequence, using an optional scheduler to enumerate the array.
2799+
* @deprecated use Observable.from or Observable.of
2800+
* @param {Scheduler} [scheduler] Scheduler to run the enumeration of the input sequence on.
2801+
* @returns {Observable} The observable sequence whose elements are pulled from the given enumerable sequence.
2802+
*/
27632803
var observableFromArray = Observable.fromArray = function (array, scheduler) {
2764-
//deprecate('fromArray', 'from');
2765-
isScheduler(scheduler) || (scheduler = currentThreadScheduler);
2766-
return new AnonymousObservable(function (observer) {
2767-
var count = 0, len = array.length;
2768-
return scheduler.scheduleRecursive(function (self) {
2769-
if (count < len) {
2770-
observer.onNext(array[count++]);
2771-
self();
2772-
} else {
2773-
observer.onCompleted();
2774-
}
2775-
});
2776-
});
2804+
return new FromArrayObservable(array, scheduler)
27772805
};
27782806

27792807
/**
@@ -2820,35 +2848,28 @@
28202848
};
28212849

28222850
function observableOf (scheduler, array) {
2823-
isScheduler(scheduler) || (scheduler = currentThreadScheduler);
2824-
return new AnonymousObservable(function (observer) {
2825-
var count = 0, len = array.length;
2826-
return scheduler.scheduleRecursive(function (self) {
2827-
if (count < len) {
2828-
observer.onNext(array[count++]);
2829-
self();
2830-
} else {
2831-
observer.onCompleted();
2832-
}
2833-
});
2834-
});
2851+
return new FromArrayObservable(array, scheduler);
28352852
}
28362853

28372854
/**
2838-
* This method creates a new Observable instance with a variable number of arguments, regardless of number or type of the arguments.
2839-
* @returns {Observable} The observable sequence whose elements are pulled from the given arguments.
2840-
*/
2855+
* This method creates a new Observable instance with a variable number of arguments, regardless of number or type of the arguments.
2856+
* @returns {Observable} The observable sequence whose elements are pulled from the given arguments.
2857+
*/
28412858
Observable.of = function () {
2842-
return observableOf(null, arguments);
2859+
var args = [];
2860+
for(var i = 0, len = arguments.length; i < len; i++) { args.push(arguments[i]); }
2861+
return new FromArrayObservable(args);
28432862
};
28442863

28452864
/**
2846-
* This method creates a new Observable instance with a variable number of arguments, regardless of number or type of the arguments.
2847-
* @param {Scheduler} scheduler A scheduler to use for scheduling the arguments.
2848-
* @returns {Observable} The observable sequence whose elements are pulled from the given arguments.
2849-
*/
2865+
* This method creates a new Observable instance with a variable number of arguments, regardless of number or type of the arguments.
2866+
* @param {Scheduler} scheduler A scheduler to use for scheduling the arguments.
2867+
* @returns {Observable} The observable sequence whose elements are pulled from the given arguments.
2868+
*/
28502869
Observable.ofWithScheduler = function (scheduler) {
2851-
return observableOf(scheduler, slice.call(arguments, 1));
2870+
var args = [];
2871+
for(var i = 1, len = arguments.length; i < len; i++) { args.push(arguments[i]); }
2872+
return new FromArrayObservable(args, scheduler);
28522873
};
28532874

28542875
/**
@@ -3881,31 +3902,32 @@
38813902
*/
38823903
observableProto.distinctUntilChanged = function (keySelector, comparer) {
38833904
var source = this;
3884-
keySelector || (keySelector = identity);
38853905
comparer || (comparer = defaultComparer);
38863906
return new AnonymousObservable(function (o) {
38873907
var hasCurrentKey = false, currentKey;
38883908
return source.subscribe(function (value) {
3889-
var comparerEquals = false, key;
3909+
var key = value;
3910+
if (keySelector) {
38903911
try {
38913912
key = keySelector(value);
38923913
} catch (e) {
38933914
o.onError(e);
38943915
return;
38953916
}
3896-
if (hasCurrentKey) {
3897-
try {
3898-
comparerEquals = comparer(currentKey, key);
3899-
} catch (e) {
3900-
o.onError(e);
3901-
return;
3902-
}
3903-
}
3904-
if (!hasCurrentKey || !comparerEquals) {
3905-
hasCurrentKey = true;
3906-
currentKey = key;
3907-
o.onNext(value);
3917+
}
3918+
if (hasCurrentKey) {
3919+
try {
3920+
var comparerEquals = comparer(currentKey, key);
3921+
} catch (e) {
3922+
o.onError(e);
3923+
return;
39083924
}
3925+
}
3926+
if (!hasCurrentKey || !comparerEquals) {
3927+
hasCurrentKey = true;
3928+
currentKey = key;
3929+
o.onNext(value);
3930+
}
39093931
}, function (e) { o.onError(e); }, function () { o.onCompleted(); });
39103932
}, this);
39113933
};
@@ -4616,8 +4638,7 @@
46164638
try {
46174639
var result = this.selector(x, this.index++, this.source);
46184640
} catch(e) {
4619-
this.observer.onError(e);
4620-
return;
4641+
return this.observer.onError(e);
46214642
}
46224643
this.observer.onNext(result);
46234644
};
@@ -4883,7 +4904,7 @@
48834904

48844905
FilterObservable.prototype.internalFilter = function(predicate, thisArg) {
48854906
var self = this;
4886-
return new FilterObservable(this.source, function(x, i, o) { return self.predciate(x, i, o) && predicate(x, i, o); }, thisArg);
4907+
return new FilterObservable(this.source, function(x, i, o) { return self.predicate(x, i, o) && predicate(x, i, o); }, thisArg);
48874908
};
48884909

48894910
return FilterObservable;
@@ -4905,8 +4926,7 @@
49054926
try {
49064927
var shouldYield = this.predicate(x, this.index++, this.source);
49074928
} catch(e) {
4908-
this.observer.onError(e);
4909-
return;
4929+
return this.observer.onError(e);
49104930
}
49114931
shouldYield && this.observer.onNext(x);
49124932
};

dist/rx.all.compat.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/rx.all.compat.min.js

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)