2013-06-30 1 views
2

Я пишу приложение, которое сканирует более длинный список ссылок, загрузки страниц, поиск HTML элементов с использованием запросов XPath и хранит некоторые из извлеченной информации в база данных mysql. Я использую многопоточное решение, чтобы получить максимальную отдачу от моих серверов и устранить эффект латентности.веб ползать производительность в Node.js против C#

Я пишу большинство своих приложений, используя csharp и java, и мои веб-приложения, которые пишу с помощью asp.net/c#.

Что я хочу спросить, является ли Node.js чем-то заслуживающим рассмотрения с точки зрения производительности? учитывая, что пропускная способность является самым важным фактором. Node.js, являющийся более портативным и кросс-платформенным, является еще одной причиной, но производительность для меня важнее.

+0

Моя первоначальная мысль заключается в том, что да - узел заслуживает рассмотрения для такого рода задач. Большая точка продажи для узла - производительность. Он действительно предназначен для обработки параллелизма - хотя его однопоточная. Я сделал многопоточность на C# и ее кошмар. –

+0

Он использует call_back, который реализован с помощью пула потоков. Я не уверен, что это однопоточный. Я думаю, что это многопоточность, потому что обратный вызов выполняется пулом потоков; все же вам не нужно явно делать это одновременно. –

ответ

0

Я думаю, что узкое место в вашем приложении находится в сети (HTTP или MySQL), а не на коде.

Вверх или вниз, Node.js является однопоточным и основан на очереди сообщений, когда все «сообщения» завершены, он завершает работу. Каждый I/O ждет в пуле потоков (если вы не используете методы синхронизации, что не рекомендуется).

Несколько вещей на вашем случае:

  • Вы не простые и полный контроль на процессорах/потоков, но вы всегда можете ограничить количество одновременных задания самостоятельно
  • Вам не нужно беспокоиться о параллельности, потому что нет никакого параллелизма вообще
  • Все API-интерфейсы в Node.js разработаны с оптимизированным вводом-выводом, вы можете писать 20-50% кода (в терминах строк) для написания веб-искателя, чем в C#
  • Node.js не имеет встроенной библиотеки XML, вы можете найти несколько n NPM
  • JavaScript является интерпретированным языком, код медленнее, чем C#. Но так как ваш больше на I/O, я думаю, что это не должно замедлять слишком много
  • Отладка JavaScript на Node.js является болезненным, но веб-ползать не должен быть очень сложным, либо

У меня есть написал несколько простых веб-сканеров на Node.js и определенно рекомендовал бы вам попробовать.

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