我的应用程序中有一个像
这样的计算 var points= [...3000];
for (var i = 0; i < points.length; i++) {
for (var j = i+1; j < points.length-1; j++) {
for (var k = k+1; k < points.length; k++) {}
}
}
我使用2核处理器和2GB RAM,计算在97132ms解决 我在服务器上进行了升级,我使用的是4核和8GB内存,但升级后得到了相同的结果
我试试
if (cluster.isMaster) {
var numCPUs = os.cpus().length;
// Master:
// Let's fork as many workers as you have CPU cores
for (var i = 0; i < numCPUs; ++i) {
cluster.fork();
}
并执行我的应用程序 node --nouse-idle-notification --expose-gc --stack_size = 7168 --max-old-space-size = 7168 bin / www
我认为de node v8不使用100%来自我的CPU
答案 0 :(得分:2)
node.js本身在单个thead中运行您的Javascript,并且只使用一个核心来运行它。因此,如果您的Javascript受计算限制,它将只使用一个核心,并且对于2,4或8核心计算机,性能不会有根本的不同。
使用本机代码编写的某些模块可能会使用本机线程来完成某些工作(这可能会使其他内核发挥作用),但这并不适用于您自己的Javascript的执行。
长时间运行的CPU绑定计算也可以产生到另一个可以回传其结果的进程中。当您启动另一个进程时,您正在为系统创建机会,以便为其他进程使用不同的核心。
群集创建了运行流程的多个独立副本的机会,每个副本都可以执行各自独立的作业。但是,如果您正在为一个特定作业计时,那么该作业将仅在其中一个集群中执行,因此只使用其中一个CPU。
node.js本身并不使用多个CPU来加速一个Javascript执行任务。