Skip to content

Commit

Permalink
chore(micro-perf): add perf tests for retry with queue scheduler
Browse files Browse the repository at this point in the history
Results on a Intel Core i7-3770 (Ivy Bridge) running Ubuntu:

                  |      RxJS 4.0.7 | RxJS 5.0.0-beta.1 | factor | % improved
------------------------------------------------------------------------------
retry - immediate | 41,067 (±1.04%) |  179,337 (±1.10%) |  4.37x |     336.7%
            retry | 33,846 (±1.19%) |   97,202 (±0.62%) |  2.87x |     187.2%
  • Loading branch information
luisgabriel committed Feb 12, 2016
1 parent de31b50 commit ee0b24d
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions perf/micro/current-thread-scheduler/operators/retry.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
var RxOld = require('rx');
var RxNew = require('../../../../index');

module.exports = function (suite) {
var maxRetryCount = 25;
var oldRetryCount = 0;
var newRetryCount = 0;

var _old = RxOld.Observable.ofWithScheduler(RxOld.Scheduler.currentThread, 5)
.flatMap(function (x) {
if (++oldRetryCount < maxRetryCount - 1) {
return RxOld.Observable.throw(new Error('error'), RxOld.Scheduler.currentThread);
}
return RxOld.Observable.ofWithScheduler(RxOld.Scheduler.currentThread, x);
}).retry(maxRetryCount);

var _new = RxNew.Observable.of(5, RxNew.Scheduler.queue)
.mergeMap(function (x) {
if (++newRetryCount < maxRetryCount - 1) {
return RxNew.Observable.throw(new Error('error'), RxNew.Scheduler.queue);
}
return RxNew.Observable.of(x, RxNew.Scheduler.queue);
}).retry(maxRetryCount);

function _next(x) { }
function _error(e) { }
function _complete() { }
return suite
.add('old retry with currentThread scheduler', function () {
_old.subscribe(_next, _error, _complete);
})
.add('new retry with currentThread scheduler', function () {
_new.subscribe(_next, _error, _complete);
});
};

0 comments on commit ee0b24d

Please sign in to comment.