궁금한 점
What:
- JavaScript 엔진의 최적화 기준
- JIT 컴파일 과정에서 "어떤 코드가 최적화할 가치가 있는지" 엔진이 어떻게 판단하는가?
- 자주 실행되는 코드가 어떤 방식으로 감지되고 최적화되는가? => Hot Code 최적화에 대하여
- 특정 코드 패턴이 JIT 최적화에 긍정적인 영향을 미치는가?
- Hoisting이 JIT 최적화에 미치는 영향이 있는가?
- JIT 최적화 실패 (Deoptimization)의 원인
- 디옵티마이제이션(Deoptimization)이 발생하는 주요 원인은 무엇인가?
- JavaScript 코드에서 최적화를 방해하는 특정 패턴이 있는가?
- 엔진이 어떤 경우에 최적화된 코드를 폐기하고 다시 바이트코드 실행 방식으로 되돌리는가?
- JIT 컴파일러의 두 가지 방식 (Baseline JIT vs Optimizing JIT)
- Baseline JIT과 Optimizing JIT은 각각 어떤 역할을 수행하는가?
- JavaScript 엔진이 어떤 기준으로 Optimizing JIT을 적용하는가?
- Baseline JIT에서 Optimizing JIT으로 전환되는 과정은 어떻게 이루어지는가?
Why:
#1 을 공부하면서 JavaScript Engine의 대략적인 모습을 이해할 수 있었다. 그 중 JIT와 컴파일 과정에 대한 Optimization과 관련된 내용을 접할 수 있었는데, 실제로 JS 코드는 처음 컴파일 될 때와 이후에 코드가 바뀌고 다시 컴파일 될 때 방법이 다르다고 한다. 이런 컴파일 과정의 최적화가 어떻게 처리되고 분기가 일어나는지 전체적인 과정에 대해서 이해해보고자 한다.
추측해보기
What I Already Know:
#1 을 통해 학습한 내용을 기반으로 이야기를 진행해보겠습니다.
Preliminary Thoughts:
[JIT 최적화 기준에 대하여]
[JIT 최적화 실패 원인에 대하여]
[JIT의 두 가지 방식에 대하여]
Checklist: Essential Guidelines to Verify Before Posting
Originally posted by @luke0408 in #1
궁금한 점
What:
Why:
#1 을 공부하면서 JavaScript Engine의 대략적인 모습을 이해할 수 있었다. 그 중 JIT와 컴파일 과정에 대한 Optimization과 관련된 내용을 접할 수 있었는데, 실제로 JS 코드는 처음 컴파일 될 때와 이후에 코드가 바뀌고 다시 컴파일 될 때 방법이 다르다고 한다. 이런 컴파일 과정의 최적화가 어떻게 처리되고 분기가 일어나는지 전체적인 과정에 대해서 이해해보고자 한다.
추측해보기
What I Already Know:
#1 을 통해 학습한 내용을 기반으로 이야기를 진행해보겠습니다.
Preliminary Thoughts:
[JIT 최적화 기준에 대하여]
Q1: 최적화할 코드 패턴을 어떻게 감지할까?
Q2: 최적화할 코드의 특징은 무엇이 있을까?
Q3: 특정 코드 패턴이 최적화에 유리할까?
[JIT 최적화 실패 원인에 대하여]
Q4: JIT 최적화된 코드가 예상과 다르게 동작하면 어떻게 될까?
Q5: 어떤 상황에서 최적화가 해제될까?
[JIT의 두 가지 방식에 대하여]
Q6: 두 가지 JIT 방식은 왜 필요할까?
Q7: 두 방식의 우선순위는 어떻게 결정될까?
Checklist: Essential Guidelines to Verify Before Posting
Originally posted by @luke0408 in #1