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