CNode

child_process真的能提升性能吗?

问答
MmBigFlower发布于11 年前最后回复11 年前4 回复4542 浏览0 收藏

代码如下:

var cp = require('child_process');
for(var cpIndex =0;cpIndex < 5;cpIndex++){//生成一个进程池
	var addUserCp = cp.fork(__dirname + '/addUser.js');
	addUserCp.on("message",function(m){//子进程执行完了之后,通过message事件来接受子进程发过来的数据
		var err = m.err;
		var result = m.result;
		var id = m.id;
		var totalProcess = processNum[id].totalProcess;
		if(++processNum[id].num === totalProcess){
			var callback = callbackJson[id];
			if(callback)callback(err,result);
			delete callbackJson[id];
			delete processNum[id];
		}
	})
	addUserCpList.push(addUserCp);
}

问题:

为了批量导入用户,并用bcrypt来做hash生成用户密码,其速度如npm显示的: 屏幕快照 2015-05-22 下午3.26.09.png 我rounds取的8,大概每秒能做40个hash运算,速度还是很慢,于是就想到在主进程里用child_process开启多进程来同时计算,但是发现,多进程和我直接用eventproxy耗费的时间没什么变化。 想问问,child_process正确的方法该怎么用,才能真的提升nodejs的性能。

查看回复

回复 (4)

K
kyriosli#1·11 年前

你是不是只有一个核?

M
mBigFlower#2·11 年前
引用 kyriosli你是不是只有一个核?

@kyriosli 屏幕快照 2015-05-22 下午3.48.41.png 应该是两核的

D
dayuoba#3·11 年前

child_process 的正确用法是 相当于你花钱雇佣一个专业的杀手 去干掉你杀不了的人

M
mBigFlower#4·11 年前
引用 dayuobachild process 的正确用法是 相当于你花钱雇佣一个专业的杀手 去干掉你杀不了的人

@dayuoba 放到一个8核的服务器上试了一下,做500个hash,大概要2180ms,平均4ms左右一个,与单核平均25ms一个,确实提升了。

参与回复
登录后即可参与回复。登录