Server : nginx/1.18.0 System : Linux localhost 6.14.3-x86_64-linode168 #1 SMP PREEMPT_DYNAMIC Mon Apr 21 19:47:55 EDT 2025 x86_64 User : www-data ( 33) PHP Version : 8.0.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/ecommerce/node_modules/worker-farm/examples/pi/ |
'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)
})