diff options
Diffstat (limited to 'deps/node/deps/npm/node_modules/worker-farm/examples/pi/index.js')
-rw-r--r-- | deps/node/deps/npm/node_modules/worker-farm/examples/pi/index.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/deps/node/deps/npm/node_modules/worker-farm/examples/pi/index.js b/deps/node/deps/npm/node_modules/worker-farm/examples/pi/index.js new file mode 100644 index 00000000..b7b26839 --- /dev/null +++ b/deps/node/deps/npm/node_modules/worker-farm/examples/pi/index.js @@ -0,0 +1,41 @@ +'use strict' + +const CHILDREN = 500 + , POINTS_PER_CHILD = 1000000 + , FARM_OPTIONS = { + maxConcurrentWorkers : require('os').cpus().length + , maxCallsPerWorker : Infinity + , maxConcurrentCallsPerWorker : 1 + } + +let workerFarm = require('../../') + , calcDirect = require('./calc') + , calcWorker = workerFarm(FARM_OPTIONS, require.resolve('./calc')) + + , ret + , start + + , tally = function (finish, err, avg) { + ret.push(avg) + if (ret.length == CHILDREN) { + let pi = ret.reduce(function (a, b) { return a + b }) / ret.length + , end = +new Date() + console.log('π ≈', pi, '\t(' + Math.abs(pi - Math.PI), 'away from actual!)') + console.log('took', end - start, 'milliseconds') + if (finish) + finish() + } + } + + , calc = function (method, callback) { + ret = [] + start = +new Date() + for (let i = 0; i < CHILDREN; i++) + method(POINTS_PER_CHILD, tally.bind(null, callback)) + } + +console.log('Doing it the slow (single-process) way...') +calc(calcDirect, function () { + console.log('Doing it the fast (multi-process) way...') + calc(calcWorker, process.exit) +}) |