mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-01-09 00:08:18 +08:00
c23ba31e17
Thread dropdown Small fixes
71 lines
1.8 KiB
JavaScript
71 lines
1.8 KiB
JavaScript
"use strict";
|
|
|
|
var Q = require("../q");
|
|
var fs = require("fs");
|
|
|
|
suite("A single simple async operation", function () {
|
|
bench("with an immediately-fulfilled promise", function (done) {
|
|
Q().then(done);
|
|
});
|
|
|
|
bench("with direct setImmediate usage", function (done) {
|
|
setImmediate(done);
|
|
});
|
|
|
|
bench("with direct setTimeout(…, 0)", function (done) {
|
|
setTimeout(done, 0);
|
|
});
|
|
});
|
|
|
|
suite("A fs.readFile", function () {
|
|
var denodeified = Q.denodeify(fs.readFile);
|
|
|
|
set("iterations", 1000);
|
|
set("delay", 1000);
|
|
|
|
bench("directly, with callbacks", function (done) {
|
|
fs.readFile(__filename, done);
|
|
});
|
|
|
|
bench("with Q.nfcall", function (done) {
|
|
Q.nfcall(fs.readFile, __filename).then(done);
|
|
});
|
|
|
|
bench("with a Q.denodeify'ed version", function (done) {
|
|
denodeified(__filename).then(done);
|
|
});
|
|
|
|
bench("with manual usage of deferred.makeNodeResolver", function (done) {
|
|
var deferred = Q.defer();
|
|
fs.readFile(__filename, deferred.makeNodeResolver());
|
|
deferred.promise.then(done);
|
|
});
|
|
});
|
|
|
|
suite("1000 operations in parallel", function () {
|
|
function makeCounter(desiredCount, ultimateCallback) {
|
|
var soFar = 0;
|
|
return function () {
|
|
if (++soFar === desiredCount) {
|
|
ultimateCallback();
|
|
}
|
|
};
|
|
}
|
|
var numberOfOps = 1000;
|
|
|
|
bench("with immediately-fulfilled promises", function (done) {
|
|
var counter = makeCounter(numberOfOps, done);
|
|
|
|
for (var i = 0; i < numberOfOps; ++i) {
|
|
Q().then(counter);
|
|
}
|
|
});
|
|
|
|
bench("with direct setImmediate usage", function (done) {
|
|
var counter = makeCounter(numberOfOps, done);
|
|
|
|
for (var i = 0; i < numberOfOps; ++i) {
|
|
setImmediate(counter);
|
|
}
|
|
});
|
|
});
|