'use strict' var nul = process.platform === 'win32' ? '\\\\.\\NUL' : '/dev/null' var bench = require('fastbench') var stream = require('fs').createWriteStream(nul) var flatstr = require('./') var largeStr = JSON.stringify(require('./package.json')) largeStr += largeStr largeStr += largeStr var run = bench([ function unflattenedManySmallConcats (cb) { stream.write(makeStr('a', 200)) setImmediate(cb) }, function flattenedManySmallConcats (cb) { stream.write(flatstr(makeStr('a', 200))) setImmediate(cb) }, function unflattenedSeveralLargeConcats (cb) { stream.write(makeStr(largeStr, 10)) setImmediate(cb) }, function flattenedSeveralLargeConcats (cb) { stream.write(flatstr(makeStr(largeStr, 10))) setImmediate(cb) }, function unflattenedExponentialSmallConcats (cb) { stream.write(makeExpoStr('a', 12)) setImmediate(cb) }, function flattenedExponentialSmallConcats (cb) { stream.write(flatstr(makeExpoStr('a', 12))) setImmediate(cb) }, function unflattenedExponentialLargeConcats (cb) { stream.write(makeExpoStr(largeStr, 7)) setImmediate(cb) }, function flattenedExponentialLargeConcats (cb) { stream.write(flatstr(makeExpoStr(largeStr, 7))) setImmediate(cb) } ], 10000) run(run) function makeStr (str, concats) { var s = '' while (concats--) { s += str } return s } function makeExpoStr (str, concats) { var s = str while (concats--) { s += s } return s }