source: Dev/trunk/src/node_modules/q/benchmark/compare-with-callbacks.js @ 489

Last change on this file since 489 was 489, checked in by hendrikvanantwerpen, 11 years ago

Update node modules

File size: 1.8 KB
Line 
1"use strict";
2
3var Q = require("../q");
4var fs = require("fs");
5
6suite("A single simple async operation", function () {
7    bench("with an immediately-fulfilled promise", function (done) {
8        Q().then(done);
9    });
10
11    bench("with direct setImmediate usage", function (done) {
12        setImmediate(done);
13    });
14
15    bench("with direct setTimeout(
, 0)", function (done) {
16        setTimeout(done, 0);
17    });
18});
19
20suite("A fs.readFile", function () {
21    var denodeified = Q.denodeify(fs.readFile);
22
23    set("iterations", 1000);
24    set("delay", 1000);
25
26    bench("directly, with callbacks", function (done) {
27        fs.readFile(__filename, done);
28    });
29
30    bench("with Q.nfcall", function (done) {
31        Q.nfcall(fs.readFile, __filename).then(done);
32    });
33
34    bench("with a Q.denodeify'ed version", function (done) {
35        denodeified(__filename).then(done);
36    });
37
38    bench("with manual usage of deferred.makeNodeResolver", function (done) {
39        var deferred = Q.defer();
40        fs.readFile(__filename, deferred.makeNodeResolver());
41        deferred.promise.then(done);
42    });
43});
44
45suite("1000 operations in parallel", function () {
46    function makeCounter(desiredCount, ultimateCallback) {
47        var soFar = 0;
48        return function () {
49            if (++soFar === desiredCount) {
50                ultimateCallback();
51            }
52        };
53    }
54    var numberOfOps = 1000;
55
56    bench("with immediately-fulfilled promises", function (done) {
57        var counter = makeCounter(numberOfOps, done);
58
59        for (var i = 0; i < numberOfOps; ++i) {
60            Q().then(counter);
61        }
62    });
63
64    bench("with direct setImmediate usage", function (done) {
65        var counter = makeCounter(numberOfOps, done);
66
67        for (var i = 0; i < numberOfOps; ++i) {
68            setImmediate(counter);
69        }
70    });
71});
Note: See TracBrowser for help on using the repository browser.