在node.js vs C#中的networking爬虫性能

我正在编写一个应用程序,爬过一长串链接, 下载页面 ,使用xpath查询searchhtml元素,并将检索到的一些信息存储在mysql数据库中 。 我使用multithreading解决scheme来获取大部分服务器,并消除延迟的影响。

我使用csharp和java编写了大部分应用程序,并使用asp.net/c#编写了我的Web应用程序。

我想问的是Node.js是否值得从性能angular度考虑? 因为吞吐量是最重要的因素。 Node.js更便携,跨平台是另一个原因,但性能对我来说更重要。

我认为你的应用程序的瓶颈是在networking上(HTTP或MySQL),而不是在代码上。

Node.js是单线程的,基于消息队列,所有“消息”完成后退出。 每个I / O都在线程池中等待(除非使用同步方法,这是不鼓励的)。

你的情况几件事情:

  • 你没有对处理器/线程进行简单而完整的控制,但是你总是可以自己限制同时工作的数量
  • 您不必担心并发,因为根本没有并发
  • Node.js中的所有API都是精心devise的I / O,您只能编写20-50%的代码(按行)编写Web爬虫,而不是C#
  • Node.js没有内置的XML库,你可以在NPM上find一些
  • JavaScript是一种解释型语言,代码比C#慢。 但是由于你的I / O更多,我认为它不应该让你变得太慢
  • 在Node.js上debuggingJavaScript是很痛苦的,但是networking抓取也不应该很复杂

我已经在Node.js上写了几个简单的networking爬虫,并且肯定会推荐你试试看。