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