为什么安装bufferUtil和utf-8-validate会显著提高Node.js中WS-websocket库的性能?

为什么安装bufferUtil和utf-8-validate会显著提高Node.js中WS-websocket库的性能?,node.js,npm,websocket,module,Node.js,Npm,Websocket,Module,在阅读WS-websocket库的时,我注意到以下语句: 有两个可选模块可以与ws-module一起安装。这些模块是改进某些操作的二进制插件。预构建的二进制文件可用于最流行的平台,因此您不必在机器上安装C++编译器。 果然,安装这些模块使我的性能大大提高。我的问题是:为什么它们会产生如此巨大的差异?他们怎么能让图书馆更快呢?这是因为它们是用C++编写的吗?简而言之:是的。 使用nodejs,您有两种模块: 用Javascript编写的常规NPM模块 C/C++插件模块使用名为node gy

在阅读WS-websocket库的时,我注意到以下语句:

有两个可选模块可以与ws-module一起安装。这些模块是改进某些操作的二进制插件。预构建的二进制文件可用于最流行的平台,因此您不必在机器上安装C++编译器。 果然,安装这些模块使我的性能大大提高。我的问题是:为什么它们会产生如此巨大的差异?他们怎么能让图书馆更快呢?这是因为它们是用C++编写的吗?

简而言之:是的。

使用nodejs,您有两种模块:

  • 用Javascript编写的常规NPM模块
C/C++插件模块使用名为
node gyp
的工具进行编译,并在扩展名为
.node
的文件中分发。在节点模块内部,您可以
require
一个C/C++插件模块,就像您可以
require
常规Javascript模块一样:

const addonModule = require('addonModule.node);
const addonModule = require('addonModule.node);