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