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

Commit 58d31bd

Browse files
Addressing perf for Issue #519
1 parent a656538 commit 58d31bd

24 files changed

Lines changed: 15333 additions & 304 deletions

Gruntfile.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ var browsers = [{
105105
'src/core/linq/observable/of.js',
106106
'src/core/linq/observable/never.js',
107107
'src/core/linq/observable/pairs.js',
108-
'src/core/perf/operators/range.js',
108+
'src/core/linq/observable/range.js',
109109
'src/core/linq/observable/repeat.js',
110110
'src/core/linq/observable/return.js',
111111
'src/core/linq/observable/throw.js',
@@ -393,7 +393,7 @@ var browsers = [{
393393
'src/core/linq/observable/of.js',
394394
'src/core/linq/observable/never.js',
395395
'src/core/linq/observable/pairs.js',
396-
'src/core/perf/operators/range.js',
396+
'src/core/linq/observable/range.js',
397397
'src/core/linq/observable/repeat.js',
398398
'src/core/linq/observable/return.js',
399399
'src/core/linq/observable/throw.js',
@@ -681,7 +681,7 @@ var browsers = [{
681681
'src/core/linq/observable/never.js',
682682
'src/core/linq/observable/of.js',
683683
'src/core/linq/observable/pairs.js',
684-
'src/core/perf/operators/range.js',
684+
'src/core/linq/observable/range.js',
685685
'src/core/linq/observable/repeat.js',
686686
'src/core/linq/observable/return.js',
687687
'src/core/linq/observable/throw.js',
@@ -825,7 +825,7 @@ var browsers = [{
825825
'src/core/linq/observable/never.js',
826826
'src/core/linq/observable/of.js',
827827
'src/core/linq/observable/pairs.js',
828-
'src/core/perf/operators/range.js',
828+
'src/core/linq/observable/range.js',
829829
'src/core/linq/observable/repeat.js',
830830
'src/core/linq/observable/return.js',
831831
'src/core/linq/observable/throw.js',
@@ -958,7 +958,7 @@ var browsers = [{
958958
'src/core/linq/observable/never.js',
959959
'src/core/linq/observable/of.js',
960960
'src/core/linq/observable/pairs.js',
961-
'src/core/perf/operators/range.js',
961+
'src/core/linq/observable/range.js',
962962
'src/core/linq/observable/repeat.js',
963963
'src/core/linq/observable/return.js',
964964
'src/core/linq/observable/throw.js',
@@ -1123,7 +1123,7 @@ var browsers = [{
11231123
'src/core/linq/observable/never.js',
11241124
'src/core/linq/observable/of.js',
11251125
'src/core/linq/observable/pairs.js',
1126-
'src/core/perf/operators/range.js',
1126+
'src/core/linq/observable/range.js',
11271127
'src/core/linq/observable/repeat.js',
11281128
'src/core/linq/observable/return.js',
11291129
'src/core/linq/observable/throw.js',

dist/rx.all.compat.js

Lines changed: 20 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -2883,55 +2883,29 @@
28832883
});
28842884
};
28852885

2886-
var RangeObservable = (function(__super__) {
2887-
inherits(RangeObservable, __super__);
2888-
function RangeObservable(start, count, scheduler) {
2889-
this.start = start;
2890-
this.count = count;
2891-
this.scheduler = scheduler;
2892-
__super__.call(this);
2893-
}
2894-
2895-
RangeObservable.prototype.subscribeCore = function (observer) {
2896-
var sink = new RangeSink(observer, this);
2897-
return sink.run();
2898-
};
2899-
2900-
return RangeObservable;
2901-
}(ObservableBase));
2902-
2903-
var RangeSink = (function () {
2904-
function RangeSink(observer, parent) {
2905-
this.observer = observer;
2906-
this.parent = parent;
2907-
}
2908-
2909-
RangeSink.prototype.run = function () {
2910-
return this.parent.scheduler.scheduleRecursiveWithState(0, this.loopRecursive.bind(this));
2911-
};
2912-
2913-
RangeSink.prototype.loopRecursive = function(i, recurse) {
2914-
if(i < this.parent.count) {
2915-
this.observer.onNext(this.parent.start + i);
2916-
recurse.call(this, i + 1);
2917-
} else {
2918-
this.observer.onCompleted();
2919-
}
2920-
};
2921-
2922-
return RangeSink;
2923-
}());
2924-
29252886
/**
2926-
* Generates an observable sequence of integral numbers within a specified range, using the specified scheduler to send out observer messages.
2927-
* @param {Number} start The value of the first integer in the sequence.
2928-
* @param {Number} count The number of sequential integers to generate.
2929-
* @param {Scheduler} [scheduler] Scheduler to run the generator loop on. If not specified, defaults to Scheduler.currentThread.
2930-
* @returns {Observable} An observable sequence that contains a range of sequential integral numbers.
2931-
*/
2887+
* Generates an observable sequence of integral numbers within a specified range, using the specified scheduler to send out observer messages.
2888+
*
2889+
* @example
2890+
* var res = Rx.Observable.range(0, 10);
2891+
* var res = Rx.Observable.range(0, 10, Rx.Scheduler.timeout);
2892+
* @param {Number} start The value of the first integer in the sequence.
2893+
* @param {Number} count The number of sequential integers to generate.
2894+
* @param {Scheduler} [scheduler] Scheduler to run the generator loop on. If not specified, defaults to Scheduler.currentThread.
2895+
* @returns {Observable} An observable sequence that contains a range of sequential integral numbers.
2896+
*/
29322897
Observable.range = function (start, count, scheduler) {
29332898
isScheduler(scheduler) || (scheduler = currentThreadScheduler);
2934-
return new RangeObservable(start, count, scheduler);
2899+
return new AnonymousObservable(function (observer) {
2900+
return scheduler.scheduleRecursiveWithState(0, function (i, self) {
2901+
if (i < count) {
2902+
observer.onNext(start + i);
2903+
self(i + 1);
2904+
} else {
2905+
observer.onCompleted();
2906+
}
2907+
});
2908+
});
29352909
};
29362910

29372911
/**

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.

dist/rx.all.js

Lines changed: 20 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -2694,55 +2694,29 @@
26942694
});
26952695
};
26962696

2697-
var RangeObservable = (function(__super__) {
2698-
inherits(RangeObservable, __super__);
2699-
function RangeObservable(start, count, scheduler) {
2700-
this.start = start;
2701-
this.count = count;
2702-
this.scheduler = scheduler;
2703-
__super__.call(this);
2704-
}
2705-
2706-
RangeObservable.prototype.subscribeCore = function (observer) {
2707-
var sink = new RangeSink(observer, this);
2708-
return sink.run();
2709-
};
2710-
2711-
return RangeObservable;
2712-
}(ObservableBase));
2713-
2714-
var RangeSink = (function () {
2715-
function RangeSink(observer, parent) {
2716-
this.observer = observer;
2717-
this.parent = parent;
2718-
}
2719-
2720-
RangeSink.prototype.run = function () {
2721-
return this.parent.scheduler.scheduleRecursiveWithState(0, this.loopRecursive.bind(this));
2722-
};
2723-
2724-
RangeSink.prototype.loopRecursive = function(i, recurse) {
2725-
if(i < this.parent.count) {
2726-
this.observer.onNext(this.parent.start + i);
2727-
recurse.call(this, i + 1);
2728-
} else {
2729-
this.observer.onCompleted();
2730-
}
2731-
};
2732-
2733-
return RangeSink;
2734-
}());
2735-
27362697
/**
2737-
* Generates an observable sequence of integral numbers within a specified range, using the specified scheduler to send out observer messages.
2738-
* @param {Number} start The value of the first integer in the sequence.
2739-
* @param {Number} count The number of sequential integers to generate.
2740-
* @param {Scheduler} [scheduler] Scheduler to run the generator loop on. If not specified, defaults to Scheduler.currentThread.
2741-
* @returns {Observable} An observable sequence that contains a range of sequential integral numbers.
2742-
*/
2698+
* Generates an observable sequence of integral numbers within a specified range, using the specified scheduler to send out observer messages.
2699+
*
2700+
* @example
2701+
* var res = Rx.Observable.range(0, 10);
2702+
* var res = Rx.Observable.range(0, 10, Rx.Scheduler.timeout);
2703+
* @param {Number} start The value of the first integer in the sequence.
2704+
* @param {Number} count The number of sequential integers to generate.
2705+
* @param {Scheduler} [scheduler] Scheduler to run the generator loop on. If not specified, defaults to Scheduler.currentThread.
2706+
* @returns {Observable} An observable sequence that contains a range of sequential integral numbers.
2707+
*/
27432708
Observable.range = function (start, count, scheduler) {
27442709
isScheduler(scheduler) || (scheduler = currentThreadScheduler);
2745-
return new RangeObservable(start, count, scheduler);
2710+
return new AnonymousObservable(function (observer) {
2711+
return scheduler.scheduleRecursiveWithState(0, function (i, self) {
2712+
if (i < count) {
2713+
observer.onNext(start + i);
2714+
self(i + 1);
2715+
} else {
2716+
observer.onCompleted();
2717+
}
2718+
});
2719+
});
27462720
};
27472721

27482722
/**

dist/rx.all.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.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.

dist/rx.compat.js

Lines changed: 20 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -2883,55 +2883,29 @@
28832883
});
28842884
};
28852885

2886-
var RangeObservable = (function(__super__) {
2887-
inherits(RangeObservable, __super__);
2888-
function RangeObservable(start, count, scheduler) {
2889-
this.start = start;
2890-
this.count = count;
2891-
this.scheduler = scheduler;
2892-
__super__.call(this);
2893-
}
2894-
2895-
RangeObservable.prototype.subscribeCore = function (observer) {
2896-
var sink = new RangeSink(observer, this);
2897-
return sink.run();
2898-
};
2899-
2900-
return RangeObservable;
2901-
}(ObservableBase));
2902-
2903-
var RangeSink = (function () {
2904-
function RangeSink(observer, parent) {
2905-
this.observer = observer;
2906-
this.parent = parent;
2907-
}
2908-
2909-
RangeSink.prototype.run = function () {
2910-
return this.parent.scheduler.scheduleRecursiveWithState(0, this.loopRecursive.bind(this));
2911-
};
2912-
2913-
RangeSink.prototype.loopRecursive = function(i, recurse) {
2914-
if(i < this.parent.count) {
2915-
this.observer.onNext(this.parent.start + i);
2916-
recurse.call(this, i + 1);
2917-
} else {
2918-
this.observer.onCompleted();
2919-
}
2920-
};
2921-
2922-
return RangeSink;
2923-
}());
2924-
29252886
/**
2926-
* Generates an observable sequence of integral numbers within a specified range, using the specified scheduler to send out observer messages.
2927-
* @param {Number} start The value of the first integer in the sequence.
2928-
* @param {Number} count The number of sequential integers to generate.
2929-
* @param {Scheduler} [scheduler] Scheduler to run the generator loop on. If not specified, defaults to Scheduler.currentThread.
2930-
* @returns {Observable} An observable sequence that contains a range of sequential integral numbers.
2931-
*/
2887+
* Generates an observable sequence of integral numbers within a specified range, using the specified scheduler to send out observer messages.
2888+
*
2889+
* @example
2890+
* var res = Rx.Observable.range(0, 10);
2891+
* var res = Rx.Observable.range(0, 10, Rx.Scheduler.timeout);
2892+
* @param {Number} start The value of the first integer in the sequence.
2893+
* @param {Number} count The number of sequential integers to generate.
2894+
* @param {Scheduler} [scheduler] Scheduler to run the generator loop on. If not specified, defaults to Scheduler.currentThread.
2895+
* @returns {Observable} An observable sequence that contains a range of sequential integral numbers.
2896+
*/
29322897
Observable.range = function (start, count, scheduler) {
29332898
isScheduler(scheduler) || (scheduler = currentThreadScheduler);
2934-
return new RangeObservable(start, count, scheduler);
2899+
return new AnonymousObservable(function (observer) {
2900+
return scheduler.scheduleRecursiveWithState(0, function (i, self) {
2901+
if (i < count) {
2902+
observer.onNext(start + i);
2903+
self(i + 1);
2904+
} else {
2905+
observer.onCompleted();
2906+
}
2907+
});
2908+
});
29352909
};
29362910

29372911
/**

dist/rx.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.compat.min.js

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

0 commit comments

Comments
 (0)