Rails или узел для веб-парсера?

#ruby-on-rails #performance #parsing #node.js

#ruby-on-rails #Производительность #синтаксический анализ #node.js

Вопрос:

я хочу создать анализатор, который анализирует несколько страниц XML-документа. эти страницы включают изображения и другие носители, которые обслуживаются дополнительным статическим сервером ресурсов. теперь мой вопрос:

должен ли я использовать rails для разбора документа или создать специальный сервер node, который это делает? я подумал о node из-за производительности.

анализатор создает HTML-документ из xml-файла.

заранее спасибо!

редактировать: эти HTML-страницы просматриваются несколькими пользователями.

Комментарии:

1. Я бы лично сделал это в Rails, поскольку в настоящее время я полностью влюблен в rails, но лучшее решение, вероятно, node.js 🙂 Удачи!

Ответ №1:

Я не думаю, что имеет большое значение, можете ли вы обрабатывать 100 тыс. страниц в секунду с помощью ruby или 200 тыс. страниц в секунду с помощью node.js если только вы не анализируете миллиарды XML-документов (я выдумал эти цифры). Вы должны использовать инструменты, с которыми вы лучше всего знакомы.

Тем не менее, есть несколько классных библиотек для веб-очистки / синтаксического анализа в node.js

Комментарии:

1. и включая преобразование из xml-элементов в html-элементы? итак, производительность в отношении синтаксического анализа построения? Спасибо

2. @Tronic хотя синтаксический анализ XML и является правдой (по сравнению, скажем, с JSON или yaml), вы все равно можете анализировать сотни тысяч XML-файлов в секунду на современном компьютере. Я не думаю, что вам следует беспокоиться о производительности

3. таким образом, асинхронный подход не будет иметь большого эффекта с точки зрения производительности синтаксического анализа? Спасибо!

4. @Tronic node.js является однопоточным, что означает, что он может анализировать только один документ за раз (это задача, связанная с процессором). Что node.js выделяется тем, что параллельно загружает страницы и анализирует их (или предоставляет их клиентам) в ожидании завершения другой загрузки, т. Е. не блокирует задачи, связанные с вводом-выводом.

5. Это объясняет, как node.js работает blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop или beakkon.com/geek/node.js /…

Ответ №2:

Я бы использовал node, потому что rails кажется немного излишним для этого. Однако, если вы больше знакомы с ruby вместо rails, вам следует использовать Sinatra или любой другой фреймворк меньшего размера. Просто я хочу сказать, что rails для этого закончен.