Newer
Older
// pi calculation benchmark
// pi = 3.14159265358979323846
//
const cluster = require('cluster')
if (cluster.isMaster)
master()
else
child()
function master() {
var tstart = Date.now()/1000
for (var i = 0; i < processes; i++) {
var worker = cluster.fork({index:i,points:points})
worker.on('message',(result) => {
pi += result
results += 1
if (results == processes) {
var tend = Date.now()/1000
console.log('pi: '+pi)
console.log('time: '+(tend-tstart).toFixed(1)+'s')
console.log('processes: '+processes)
console.log('estimated MFlops: '+mflops.toFixed(1))
process.exit()
}
})
}
}
function child() {
var index = parseInt(process.env.index)
var points = parseInt(process.env.points)
var a = 0.5
var b = 0.75
var c = 0.25
var sum = 0
var start = 1+points*index
var end = points*(index+1)
for (var i = start; i <= end; ++i)
sum += a/((i-b)*(i-c))
process.send(sum)