Develop Dairy/JavaScript, React

JS와 Webassembly의 차이점 (2021. 10. 23)

평생코딩 2021. 10. 23. 15:06

JS는 아래와같은 방식을 거칩니다.

google V8 Engine

인터프리터 : 코드를 한 줄씩 읽어, 한 줄씩 Bytecode로 변환

컴파일러 : 파일 전체를 읽은 뒤, 코드의 의미를 해석하고 파일 전체를 기계어로 컴파일해서 변환

Interpreter -> Byteocode 를 ingition이(구글이 명명) 실행

  • Optimising은 반복된 작업의 코드들을 최적화 해준다는 뜻.

*Optimising로 해석된 Machine Code를 turbofan(구글이 명명)이 실행 *

  • turbofan이 할 수 없으면 optimising을 취소하고 ingition이 다시 실행 됩니다.

.wasm은 아래와같은 방식을 거칩니다.

.wasm 파일 -> 구글의 V8 Liftoff 컴파일러로 실행

  • wasm은 많은 코드가 optimizing이 되고 취소되는 경우도 거의 없어 빠르다.