I 4 Kerne haben und lief den Code nach this example:Node.js Cluster - optimale Anzahl der Arbeitnehmer
var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;
var id = 0;
if (cluster.isWorker) {
id = cluster.worker.id;
}
var iterations = 1000000000;
console.time('Function #' + id);
for (var i = 0; i < iterations; i++) {
var test = 0;
}
console.timeEnd('Function #' + id);
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
}
mit 4 Gabel (der Code oben), ich habe:
Funktion # 0: 1698.801ms
Funktion # 1: 3282.679ms
Funktion # 4: 3290.384ms
Funktion# 3: 3425.090ms
Funktion # 2: 3424.922ms
Mit 3 Gabel, ich habe:
Funktion # 0: 1695.155ms
Funktion # 2: 1822.867ms
Funktion # 3: 2444.156ms
Funktion # 1:
Mit 2 Gabel 2606.680ms bekam ich:
Funktion # 0: 1684.929ms
Funktion # 1: 1682.897ms
Funktion # 2 : 1686.123ms
Ich verstehe diese Ergebnisse nicht. Ist nicht 1 Gabel/Kern die optimale Nummer? Hier sehe ich, dass 4 Gabel nicht besser als 2 Gabel ist.
Danke für die Informationen. Dann für Node.js wird die andere Hälfte der Kerne nur für den asynchronen Code verwendet? Benötigt es Cluster oder bedeutet dies, dass Node.js nur einen Ausführungs-Thread verwendet, ** aber auch ** andere Parallele Threads (~ Kerne?) Für den asynchronen Code? Auch wenn ich ein Spiel entwickle, ist es hauptsächlich CPU-gebunden. Aber ich sah in einer Github-Arbeit einige 'setTimeout (updateClients, 0);' in der Hauptschleife, weil "asynchrone Updates die Leistung erhöhen". Sind sie richtig? – zbeyens
Node selbst plant nichts, das hängt vom Betriebssystem ab (und auch von der CPU selbst). Wenn Sie über CPU-gebundenen Code verfügen, kann 'cluster' Ihnen helfen, weil Sie damit den CPU-lastigen Code in einem separaten Prozess ausführen können, sodass das Betriebssystem einen anderen Code als" Haupt "-Teil der App einplanen kann . Die Verwendung des 'setTimeout()' Tricks ist nützlich, wenn Sie I/O-gebundene und CPU-gebundene Kerne in demselben Prozess mischen. – robertklep