2011-12-27 4 views
1

Я хотел бы знать, если есть разница, производительность мудрый между:В чем разница между этими двумя реализациями в node.js?

1) в том же порту:

var http = require('http'); 

http.Server(function (req, res) { 
    if (req.url == 'foo') { foo(); return;} 
    if (req.url == 'bar') { bar(); } 
}).listen(123); 

2) расщепляется на 2 порта

var http = require('http'); 

http.Server(function (req, res) { 
    foo(); 
}).listen(123); 

http.Server(function (req, res) { 
    bar(); 
}).listen(456); 

3) в 2 отдельных файлах js, которые я запускаю на двух разных узлах cmd.

foo() и bar() - функции, которые могут потребовать времени для решения, например, для загрузки файлов.

ответ

1

# 1 и # 2 будут в основном идентичными с точки зрения производительности. Если вы запускаете два сервера, например, в # 3, и у вас есть многоядерный компьютер, вы сможете выполнять в два раза больше одновременных запросов, в зависимости от требуемого и доступного ввода-вывода.

+1

Ну, если рабочая нагрузка связана с I/O-привязкой, наличие двух CPU не ускорит ее (иначе node.js вообще не будет иметь никакого смысла). Разумеется, если рабочая нагрузка будет очень тяжелой, это очень поможет. – Thilo

+0

Yup, вот почему я сказал «в зависимости от требуемого и доступного IO» :) – nicolaskruchten

1

Два разных экземпляра узла дают вам два потока ЦП (но используют больше памяти и не могут легко обмениваться данными). Это единственное реальное различие, которое я вижу.

Смежные вопросы