Why do we need C++ Addons in Node.js ?
In this article, we will see why do we need C++ Addons in NodeJS.
- Node.js Addons are dynamically linked shared objects, written in C++.
- It can be loaded into Node.js using the require() function and also used just as if they were an ordinary Node.js module.
- It is used primarily to provide an interface between JavaScript running in Node.js and C/C++ libraries.
Why do we need C++ Addons?
- It gives the opportunity to make intensive, parallel, and high-accuracy calculations.
- It also gives the opportunity to use C++ libraries in NodeJS.
- We can integrate a third-party library written in C/C++ and use it directly in NodeJS.
- The performance of C++ is far better on larger values or computation.
Pre-requisites:
- Basic knowledge of Node.
- Node.js installed (version 12+).
- Npm installed (version 6+).
Module Installation: Install the required module using the following command.
npm i -g node-gyp
Folder Structure: It will look like this.
Now create binding.gyp, calculate.cc file with the following code.
Filename: binding.gyp
{ "targets": [ { "target_name": "calculate", // Name of C++ Addons. "sources": [ "calculate.cc" ] // Source of C++ file. } ] }
calculate.cc
#include <node.h> #include <iostream> namespace calculate { using v8:: FunctionCallbackInfo; using v8 :: Isolate; using v8 :: Local; using v8 :: Object; using v8 :: Number; using v8 :: Value; // C++ add function. void Sum( const FunctionCallbackInfo<Value>&args) { Isolate* isolate = args.GetIsolate(); int i; double x = 3.141526, y = 2.718; for (i=0; i<1000000000; i++) { x += y; } auto total = Number::New(isolate,x); args.GetReturnValue().Set(total); } // Exports our method void Initialize(Local<Object> exports) { NODE_SET_METHOD(exports, "calc" , Sum); } NODE_MODULE(NODE_GYP_MODULE_NAME,Initialize); } |
app.js
// Require addons const calculate = require( './build/Release/calculate' ); // Javascript add function. function calc() { // Two variables. let i, x = 3.141526, y = 2.718; for (i = 0; i < 1000000000; i++) { x += y; } let total = x; return total; } console.time( 'c++' ); calculate.calc(); console.timeEnd( 'c++' ); console.time( 'js' ); calc(); console.timeEnd( 'js' ); |
Step to run the application: To build and configure, run the following command.
node-gyp configure build node app.js
Output:
c++: 1.184s js: 1.207s
Contact Us