Node.js의 속도는 얼마나 빠를까?

열심히 node.js를 포함한 수많은 궁금증에 대한 리서치를 틈나는 대로 하고 있다. (그래서 내 생업에는 집중을 잘 못한다) 오늘의 궁금증은 node.js는 얼마나 빠를까 하는 것이다. node.js는 대충 사용해보니 CPAN에서 module을 가져다 쓰는 perl이나 크게 다를 바 없다는 느낌을 받았다. 좀 다른 점이라고 하면 npm에서 유료 회원들로부터 지원을 받아서 운영되고 있으므로 각 module의 제작자들과 연결이 된다는 점이고, 그들이 하고 있는 일에 대해서 그들이 공개하는 한에 대해서 잘 알 수 있게 된다. 오히려 S/W 개발자의 세계는 더 솔직하고 투명하다는 느낌을 받았다. 비록 매우 짧은 자바 스크립트 몇 줄이지만 필요한 사람들을 위해 공개하고 있고 자신들이 무슨 일을 하는지 일일이 밝히기도 하고 어떤 사람인지에 대해서 소개하는 이들도 있다. 다른 직업 세계에서는 그런 것이 별로 없다. 혹여나 자신의 정보가 타 경쟁자들에게 노출되면 약점이라도 잡힐 거라 생각하는 것인지 아니면 소개할 시간 조차 없는 것인지. 어찌 되었든 이러한 자세는 장기적으로 자신을 발전시키는데 별 도움이 되지 않는 다는 생각이 들었다. 본론으로 돌아와서 아래의 개인 블로그를 가보면 비교적 최신의 벤치마크 결과를 볼 수 있다. 너무 너무 친절하게도 이 세상에서 돌아가고 있는 거의 모든 언어들에 대한 성능 비교가 되어있다.

C++ vs. Python vs. PHP vs. Java vs. Others performance benchmark (2016 Q3) 이것을 통해 우리는 현재 어떤 언어들이 애용되고 있는지도 아울러 알 수 있다. 그 옛날로 거슬러 올라가면 절대로 쓰일 일 없는 COBOL이나 FORTRAN을 배운 세대도 있다. ALGOL/PL-1 이런 언어가 있었다는 것을 들어나보았는가? 이 비교 중에서 역시나 가장 빠르고도 모든 것의 기준이 되는 언어는 역시 C/C++이다. 그만큼 기계어에 가까운(?) 고급언어가 되어버렸다. 조금 더 내려가면 inline assembly가 될 수 있겠지만, 요새의 연산이나 일들은 assembly로 바꾸기가 쉽지 않고 바꾼다고 하더라도 컴파일러와 대비했을 때 큰 성능차이가 없다. 정말로 반복적인 일이라든가 H/W의 특수성을 잘 이용하는 경우가 아니라면 이득이 거의 없다. assembly로 개발하느라 시간과 골치 아픈 것을 생각하면 오히려 손해가 된다고 보는 게 맞겠다. node.js는 이 벤치마크에서 상당히 상위권에 속한다. C/C++에 비해서 아주 약간! 느리다. C#과 거의 비슷한 수준이다. 비교 대상으로 생각했던 python이나 perl에 비하면 엄청나게 빠르다. 새로 알게 된 것은 JIT compiler가 붙은 python(pypy)라는 것이 있다는 것과 Rust라는 매우 빠른 언어가 있다는 것이다. perl에도 JIT compiler가 붙는다면 엄청나게 빨라 질텐데 아마도 perl은 노땅들이나 붙잡고 있으라고 버림받은 스크립트 언어가 아닌가 한다. 어쨌든 node.js를 활용하는 것이 IoT으로 활용도로 보더라도 상당히 매력적이라는 것을 이야기 하고 싶다.