You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							72 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							72 lines
						
					
					
						
							1.8 KiB
						
					
					
				"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);
 | 
						|
        }
 | 
						|
    });
 | 
						|
});
 |