js가 싱글쓰레드임에도 성능이 좋은 이유가 무거운 i/o 작업같은거를 비동기로 처리해줌에 있잖아?
근데 이렇게 비동기로 넘긴 것들은 c++ 등으로 만들어진 멀티쓰레드를 지원하는 브라우저가 처리해주는걸로 알고 있는데
그럼 노드js도 콜백으로 넘긴 비동기처리 해야하는 작업들을 v8엔진에서 걍 알아서 멀티쓰레딩으로 처리해주는거야?
그니까 c/c++로 만들어진 v8엔진빨로 js가 빠른거임??
js가 싱글쓰레드임에도 성능이 좋은 이유가 무거운 i/o 작업같은거를 비동기로 처리해줌에 있잖아?
근데 이렇게 비동기로 넘긴 것들은 c++ 등으로 만들어진 멀티쓰레드를 지원하는 브라우저가 처리해주는걸로 알고 있는데
그럼 노드js도 콜백으로 넘긴 비동기처리 해야하는 작업들을 v8엔진에서 걍 알아서 멀티쓰레딩으로 처리해주는거야?
그니까 c/c++로 만들어진 v8엔진빨로 js가 빠른거임??
맞음 v8 엔진이 사기임
생각해보니 얘들이 v8 만들었던 경험으로 golang 만든듯
v8이랑 go랑 연관이있으?
둘 다 구글이 만든거긴 하지
고루틴이랑 이벤트루프랑 비슷한듯
노드는 스레드 풀이 따로 있음 - dc App
크립토 모듈처럼 CPU 갈구는 애들이랑 dns 룩업이랑 일부 파일 io가 스레드 풀에서 돌고 결과만 이벤트 루프로 받는거 - dc App
대부분 걍 비동기로 돌고 스레드풀 타는거 별로 없음 - dc App
일단 비동기 처리 잘되는데다가 JS 엔진 성능이 ㄹㅇ 미쳤음.
자바, 자스가 GC 2탑일껄
nodejs 이벤트 루프는 libuv 사용함