#Install
env : Ubuntu 18.04
해보니까 16.04는 안됬다.
v8이 빌드 된 상태에서 v8 디렉토리 들어 간 후
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install npm
cd ~/v8/v8/tools/turbolizer
npm i
npm run-script build
이런식으로 빌드를 진행하면 된다.
잘 됬는지 확인하는방법은 마지막 라인에
created build/turbolizer.js in 6.5s
이거 비슷한게 있으면 성공 한거다.
Use
구글링을 좀 해보니 turbolizer 는 Chrome 환경에서 진행하는게 더 좋다고 한다.
그래서 크롬 설치했다.
그리고 실행하는 방법은
python -m SimpleHTTPServer 8000
이런식으로 8000번 포트를 열도록 할 수 있다.
이런식으로 열은 후 웹 브라우저로 localhost:8000 으로 접속하게 되면 turbolizer 쓸수 있는 환경이 만들어진다.
처음 환경을 구성하고 이런식으로 들어오게되면 사진처럼 아무것도 없을 것이다. 옆에 설명서가 있긴한데 이걸로는 조금 부족한거같아서 설명을 조금 더 해보려고한다.
일단 이거를 사용할려면 --trace-turbo 를 실행하여 .json 파일을 생성해 줘야 한다.
function opt_me(x, y) {
return x + y;
}
console.log(opt_me(3,4))
%OptimizeFunctionOnNextCall(opt_me);
console.log(opt_me(1, 2))
이런식으로 test.js 파일을 만들어 준 후
./d8 --allow-natives-syntax --trace-turbo test.js
이런식으로 커맨드를 하나 쓰게 되면
turbo-opt_me-0.json
이런식으로 파일이 하나 생성되게 된다.
그럼 이걸로 파일은 준비가 된거다.
다시 웹 브라우저로 넘어와서 Ctl + L 단축키를 눌러주면 이제 파일을 열수있는 창이 나온다.
이걸로 아까전에 생성된 .json 파일을 읽어주면 된다.
그럼 이런식으로 나오게 될꺼다.
뭔가 많이 부족해보이는데 이건 노드 뭐 이런거를 많이 가려놔서 그런거다.
이거를 보게할려면 위에 도구를 좀 사용해야된다.
위에 보면 이렇게 도구를 쓸수 있는데 2번쨰꺼를 클릭하게되면 노드들이 보인다.
근데 딱 보기에도 너무 개판이다. 이거를 좀 정리해주는게 첫번째 도구이다.
이거를 한번 클릭해주면
깔끔하게 정리가 된다.
근데 이번에는 또 크기가 너무 작다.
그래서 이번에는 돋보기를 써야한다.
Shift 키를 누른후 저런식으로 틀 3개를 잡은 후 돋보기 같이 생긴 도구 클릭해주면
됬다. 확대가 되었다.
그럼 이제 이거를 좀 분석을 해보자.
일단 색깔이다.
그래프를 보게되면 이제 색깔이 엄청 다양한데 이게 색깔마다 뜻하는게 다 다르다.
노란색 : 이 노드는 제어 노드를 나타낸다. 시작 또는 종료 지점, 반환, "if"문 등과 같은 스크립트의 흐름을 변경하거나 설명하는 모든거다 .
하늘색 : 특정 노드가 가질 수 있거나 반환 할 수있는 값을 나타내는 노드이다. 함수가 항상 "42"를 반환한다고 가정하면 최적화 단계에 따라 그래프에서는 이를 상수 또는 범위 (42, 42)로 볼 수 있다.
진한 파란색 : 중간 언어 작업을 나타낸다 (바이트 코드 명령어를 생각해보세요). 피드백이 Turbofan으로 소비되는 위치를 아는 데 도움이된다.
빨간색 : JavaScript 수준에서 실행되는 기본 JavaScript 코드 또는 작업이다. 예를 들어 JSEqual, JSToBoolean 등 이다.
녹색 : 컴퓨터 수준 언어. 낮은 수준에있는 모든 것이다.
turbofan 은 여러가지에 최적화 과정을 지난다고 알고 있을 것이다.
이제 turbolizer 로 이거를 또 확인 할 수 있는데,
이거다. 이거를 보게되면 약 20단계로 구성 되어있는거를 알 수 있다.
이거로 하나하나 클릭하면서 볼 수 있다.
일단 여기까지 내가 알고있는 turbolizer 에 대해서 설명해 봤는데 이제 이게 하나하나 무엇을 뜻하는지 좀 알아봐야되겠다.
추가 :
찾아보니까 이렇게 할 필요가 굳이 없었을거같기도하다.
v8.github.io/tools/head/turbolizer/index.html
여기 사이트에서 turbolizer를 지원한다.
json 파일 뽑아서 여기서 돌리면 깔끔하게 보여준다