티스토리 뷰
CSharp Just-In-Time Compilation Process
- CSharp JIT 컴파일과정을 정리하는 글입니다
- 아래의 자료들을 참고했습니다
Step #1
- CSharp 으로 소스코드를 작성하여 파일로 저장한다
ex) some-application.cs
Step #2
- CSharp 컴파일러로 컴파일을 수행한다
ex) prompt> csc some-application.cs
.dll
또는.exe
파일이 생성된다- 컴파일되는 프로그램에
Main()
이 존재한다면.exe
파일로 생성된다 ex) some-application.exe
- 컴파일되는 프로그램에
- 이 과정에서 생성된 파일은 기계어가 아니기 때문에 컴퓨터가 바로 실행할 수 없다
- 이 파일을 다음의 호칭들로 부르곤 한다
- MSIL →
MicroSoft Intermediate Language
- IL →
Intermediate Language
- CIL →
Common Intermediate Language
- 생성된 파일에는 IL 코드가 작성되어있다
- IL 코드는 다시 한 번 컴파일을 거쳐야 비로소 기계어로 번역된다
※ csc
는 CSharp 컴파일러 실행파일을 의미한다 ( CSharp Compiler 의 약어 )
일반적으로 C:\Windows\Microsoft.NET\Framework\[version]\csc.exe
위치에 존재한다ex) C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
Step #3
- JIT 컴파일러로 컴파일을 수행한다
- 이 컴파일은
Step #2
에서 생성된 파일을 실행할 때 수행된다 ex) prompt> some-application.exe
- 이 컴파일은
- CLR 이 이 과정을 담당한다
- CLR 이 JIT 컴파일러로 IL 코드를 컴파일한다
- 이 과정을 통해 IL 코드들이 비로소 기계어로 번역된다
- 이렇게 생성된 기계어를 다음의 호칭들로 부르곤 한다
Native Code
Machine Code
- 생성된 기계어는 시스템에 의해 바로 실행될 수 있다
※ CLR
은 IL 코드의 실행을 담당하는 가상머신이다 ( Common Language Runtime 의 약어 )
Java 에서의 JVM 과 유사한 역할을 수행한다
프로그램 실행뿐만 아니라 프로그램의 메모리 및 스레드 관리 등을 수행하기도 한다
※ JIT 컴파일과 AOT 컴파일
JIT 컴파일은 실행도중 컴파일 과정을 거치는 방식을 말하며, AOT 컴파일은 그러한 과정이 없는 방식을 말한다
그렇기 때문에 AOT 컴파일이 일반적으로 성능면에서 우위를 가진다
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Anaconda
- tensorflow
- csharp
- JIT
- visual-studio
- WindowAPI
- git
- vscode
- lib
- NOX
- Game
- pclaf
- Python
- windows
- unity
- unreal
- DirectX
- Slack
- CUDA
- Docker
- CAFFE
- Hashtable
- ATOM
- A.I.
- PopeTV
- visualstudio
- C/C++
- shader
- dll
- cuDNN
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함