2013-03-31 3 views
1

저는 C++의 초보자입니다.하지만 C++ 프로그램 내에서 실행되는 자바 스크립트 (또는 루아 또는 스크립팅 언어)가 같은 종류인지는 궁금합니다. C++ 코드가 제공 할 수있는 하드웨어 가속자바 스크립트가 C++ 프로그램에 내장 된 웹에서 자바 스크립트보다 빠릅니다.

이 프로그램은 어딘가에 js 엔진이 있어야한다는 것을 알고 있지만,이 자바 스크립트가 본질적으로 더 빠르고 더 나은 이유가 무엇인지 궁금합니다.

+2

자바 스크립트는 여전히 자바 스크립트입니다. 대부분의 현대적인 해석기가 C 또는 C++ 기반 코드에서 이미 실행되고있는 것은 아닙니다. – eandersson

답변

3

당신이 말했듯이 그런 프로그램은 일종의 자바 스크립트 엔진을 사용해야 할 것입니다. V8과 같은 브라우저에서 이미 사용 된 프로그램 일 가능성이 높습니다. 속도 향상 (있는 경우)은 주로 응용 프로그램 설계에서 비롯됩니다. 귀하의 프로그램은 아마 자바 스크립트와 얽힌 많은 자원과 추상화를 사용할 필요가 없을 것입니다.

2

자바 스크립트 자체는 번역 된 언어입니다. 자신 만의 통역사 나 통역사를 쓸 수 있습니다. (만약 당신이 정말로 똑똑하다면, 기존의 것보다 더 잘합니다 ...), "일하는"일을하는 것은 큰 일입니다. 기존의 것들을 포함 할 가능성이 높으며 모든 단점을 덮기 어려울 가능성이 가장 높습니다. "Firefox에서 이런 식으로 작동합니다. IE7에서는 IE8의 다른 방식으로 웹 사이트에서 사용하는 유형의 해결 방법입니다.

기존 JS 인터프리터를 사용하는 경우 거의 또는 전혀 이점이 없습니다.

+0

V8은 javascript를 IA-32, x86/64 및 ARM 머신 코드로 컴파일합니다. Javascript는 C 언어보다 더 이상 해석되지 않습니다. – Sebivor

+1

번역 방법 (예 : "interpretation versus compilation")은 언어 구현 (예 : 번역자, 컴파일러 또는 통역사)에 의한 결정입니다. 언어 자체가 아닌 – Sebivor

+0

"시간에 맞춰 컴파일"할 수 있으며 직접 해석이 아닌 다른 방법으로는 처리 할 수없는 (예 : "평가"와 같은) 해결할 수없는 기능이 있습니다. –

0

속도는 언어에 의해 도입 된 속성이 아니라 구현에 의해 도입 된 속성입니다. 하나의 Javascript 변환기는 최적 인 것으로 간주되는 알고리즘을 사용하여 작성 될 수 있으며, 다른 Javascript 변환기는 부주의하고 느린 알고리즘을 사용하여 작성 될 수 있습니다. Javascript 소스 코드에서 사용되는 알고리즘은 최적화시 가장 중요한 시도입니다.

마찬가지로 C++ 컴파일러는 코드를 자동으로 최적화하려고 시도합니다. C++의 구현은 하나의 시스템에서는 최적이지만 다른 시스템에서는 매우 느린 자바 스크립트 변환기를 생성 할 수 있습니다. 반면 다른 시스템에서는 두 시스템에 완벽하게 최적 또는 느린 자바 스크립트 변환기를 생성 할 수 있습니다.