|
|
'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) })
|