본문 바로가기

# Lang/NodeJS C++ Addon

(3)
# Lang/NodeJS C++ Addon [벤치마크] C++ 애드온을 도입하면 성능이 얼마나 향상될까? 시작하기에 앞서 사실 JavaScript는 꽤 빠르고 생산성도 높은 스크립팅 언어입니다. 특히 병렬성이 높은 작업에 대해서는 때때로 컴파일 언어보다 높은 성능을 보여주곤해서, 동시성이 높은 웹서버를 만들기 위한 선택지로 Node.JS + Express.js가 먼저 고려되는 경우가 많습니다. 하지만 병렬성을 요구하지 않는 연산에서는 약한 모습을 보여주는데, 수학적 연산이 집중된 암호학 분야는 특히 NodeJS가 꺼려하는 대표적인 분야 중 하나입니다. 그러나 이러한 종류의 연산은 C++ Addon을 사용하면 보완할 수 있다고 알려져있죠. 그렇다면 NodeJS에 C++ Addon을 도입하면 성능이 얼마나 향상될까요? 아무때나 C++ Addon을 도입하면 되는걸까요? 이 포스팅에서는 C++ Addon의 성능에 ..

2020. 3. 16. 09:28

# Lang/NodeJS C++ Addon [튜토리얼] C++ 크로스플랫폼 애드온 제작하기 이 포스팅은 이전 포스팅과 이어집니다. 크로스플랫폼 NodeJS에 C++을 도입한다면 장단점은 명확합니다. 좋든 좋지않든 C++의 거의 모든 장단점을 통채로 가져온다는 것이죠. C++의 모토인 원한다면 만들 수 있다는 장점을 가져온 것과 동시에, 타겟 플랫폼에 종속된다는 단점도 함께 가져온 것이죠. 예를 들어 Node.JS의 기본함수만으로는 동기적으로 쓰레드를 정지시키는 함수를 만들 수 없기 때문에, 이 기능을 사용하고 싶다면 C++의 힘을 빌려야합니다. 하지만 문제는 각 운영체제마다 sleep을 사용하는 방법이 다르다는 것입니다. 헤더 이름도 다르고, 함수 시그너쳐도 다르며, 함수 이름도 다릅니다. Windows #include // // sleep 1ms. Sleep(1); Linux #include..

2020. 3. 14. 20:47

# Lang/NodeJS C++ Addon [DeepDive] NodeJS C++ Addon 깊게 입문하기 Node.JS Foundation 구성요소 Native Extension에 대해 설명하기에 앞서, 먼저 Node.JS가 어떻게 구성되어 있는지에 대해 알아야 합니다. JavaScript Node.JS에서 실행가능한 프로그래밍 언어입니다. V8 자바스크립트 언어로 작성된 코드를 실행해주는 엔진입니다. 자바스크립트의 객체를 생성하거나, 함수를 호출하는 방법과 같은 매커니즘을 정의합니다. Libuv 비동기 실행과 라이프 사이클을 제공하는 C 라이브러리입니다. Node.JS의 모든 비동기 동작은 LibUv가 관리합니다. 기타 라이브러리 Node.JS는 V8이나 LibUv를 포함한 수많은 라이브러리의 집합체이며, 이러한 라이브러리들이 정적으로 링크되어 Node.exe를 이룹니다. Node.JS가 어떤 라이브러리를..

2020. 3. 11. 19:10