I want test execute time for 10,000,000,000 record.
- 
test for.js file, execute time: 200 sec
 - 
test index.js file
- 
if use Test 1 comment in child_process.js file, execute time is very long (more than execute for.js file)
 - 
if use Test 2 comment in child_process.js file, execute time is very fast, execute time: 58 sec
 
 - 
 
now my question:
must different between data.js file in Test 1 and async.js file in Test 2 when call child_process.js with the same for loop?
index.js
var launcher = require('./child_process');
console.log('Launching cluster');
launcher.launch();
child_process.js
var child_process = require('child_process');
var numCPUs = require('os').cpus().length;
var arg = [
    {start: 0, end: 2500000000},
    {start: 2500000000, end: 5000000000},
    {start: 5000000000, end: 7500000000},
    {start: 7500000000, end: 10000000000}
];
exports = module.exports = {
    launch: function () {
        console.log('Before fork');
        for (var i = 0; i < numCPUs; i++) {
             /**
              * Test 1
              */
            //child_process.fork(__dirname + '/data.js', [arg[i].start, arg[i].end]);
             /**
              * Test 2
              */
            // var result = child_process.fork(__dirname + '/async.js', []);
            // result.send(arg[i]);
        }
        console.log('After fork');
    }
};
async.js
process.on('message', function (arg) {
    console.log('Range:', arg);
    var start = new Date().getTime();
    var str;
    for (var i = arg.start; i < arg.end; i++) {
        if ((Math.floor(Math.random() * 100) + 1)  % 2 === 0) {
            str = i;
        } else {
            str = i;
        }
    }
    console.log(new Date().getTime() - start);
});
data.js
var arg = process.argv;
arg.shift();
arg.shift();
var start = new Date().getTime();
var str;
console.log('Range:', arg[0], arg[1]);
for (var i = arg[0]; i < arg[1]; i++) {
    if ((Math.floor(Math.random() * 100) + 1)  % 2 === 0) {
        str = i;
    } else {
        str = i;
    }
}
console.log(new Date().getTime() - start);
for.js
var start = new Date().getTime();
var str;
for (var i = 0; i < 10000000000; i++) {
    if ((Math.floor(Math.random() * 100) + 1)  % 2 === 0) {
        str = i;
    } else {
        str = i;
    }
}
console.log(new Date().getTime() - start);
via pooya azarpour
No comments:
Post a Comment