在node.js中管道流的性能如何?

时间:2014-12-18 05:42:35

标签: node.js sockets stream

我有一个用Node.js编写的TCP服务器。当在其服务器套接字上接收到套接字时,该进程将套接字传递给进程池。它要么分叉,要么重新使用先前分叉的进程。然后,它使用ChildProcess.send()将接收到的套接字传递给另一个进程。这样可以完全控制子进程的套接字。

我正在考虑采取不同的方法,但我担心潜在的性能权衡。我想通过stdin或unix域套接字或管道将套接字传递给子进程。有很多原因可以解释为什么这种方法在我的特定领域中更受欢迎,但我不会因为这些细节而对这个问题感到满意。

所以我想知道Node.js流上的pipe()方法的性能特征。流的管道是在系统级处理的,还是Node.js必须从一个流中读取每个字节并将其发送到目的地?有一些系统调用(即splice())提供一定级别的文件描述符的零拷贝流。 Node.js是使用某种类似的机制还是手动?

1 个答案:

答案 0 :(得分:0)

我建议阅读this blog post,其中重点介绍

  

说到溪流,事物的速度和最慢的一样快   工作流中的流

另外,请阅读this answer,解释如何对节点中的流进行基准测试。