2013-12-12 1 views
0

편집 노드의 내부 동작을 알고 있다면 대답하십시오.node.js에서 C++ 애드온과 자바 스크립트 간의 상호 작용이 왜 비싼가요?

저는 최근에 노드에 대한 C++ 애드온으로 다이빙에 관심이있었습니다. 주제에 대한 많은 기사를 읽었습니다. 기본적으로 C++과 노드 사이의 대화를 줄여야한다고 말합니다. 나는 그것을 원칙으로 이해한다. 내가 정말로 찾고있는 것은 인 입니다.

다시 말하지만, node.js에서 C++ 애드온과 자바 스크립트 간의 상호 작용이 왜 비싼가요?

답변

0

Node의 내부 동작에 대해 전혀 알지 못하지만, 실제로는 코드가 수행하는 작업이 적을수록 빠를 것입니다. 추가 기능의 Node API와 상호 작용하면 이 아닌이 API와 상호 작용합니다. 이러한 모든 인자를 감싸는

int sum = a + b; 

... 및 함수 변수를 생성 포함 할 자바 스크립트 엔진에 식을 추가 평가 (인위적인) 예를 들어, C++로 두 정수를 가산의 차이를 고려 함수를 호출하고 반환 값의 래핑을 해제합니다.

C++/JS 통신 자체에 필요한 래핑/언 래핑/값 변환은 두 레이어 간의 상호 작용 수를 최소화하려고 시도 할만큼 충분합니다. C++ 타입 시스템과 JS 타입 시스템은 실제로 다르다. JS는 int를 가지지 않고, 문자열은 다르게 구현되고, 객체는 다르게 작동한다.

+0

감사합니다. 아마도 "코드가 수행하는 작업량이 적을수록 더 빠르며 (덜 비싸다)"것입니다. 아마도 C++에서 자바 스크립트 토지로 다시 들어가는 데 필요한 추가 호출이 많이있을 것입니다. 여러분은 노드의 내부 동작에 대한 지식이 없다는 것을 언급합니다. 나는 그것을 반영하기 위해 질문을 편집 할 것이다. – jsdevel

+1

귀하의 질문이보다 구체적으로 제시 될 것을 제안드립니다. 스위칭, 컨텍스트에서의 데이터 랩핑, 변환 및 일반적인 오버 헤드는 모든 interop 레이어와 마찬가지로 상호 작용의 비용이 듭니다. 어떤 추가 정보를 배우기를 희망하는지 모르겠습니다. – Jacob

관련 문제