반응형
<MethodImpl>
: 메서드의 구현 방법을 자세히 지정해줍니다.
using System.Runtime.CompilerServices;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
void method() { }
<많이 쓰이는 MethodImplOptions 키워드>
- AggressiveInlining : 가능하면 인라인.
- NoInlining : 컴파일러가 런터임에 인라인되지 않도록 적용.
- Synchronized : 동기화. 한번에 한 쓰레드에서만.
그 외의 키워드는 아래 링크를 참고하시길 바랍니다.
<인라인 함수>
: 함수 코드가 호출자에게 롤링되는 컴파일러 최적화 방법입니다. 인라인 함수를 호출 -> 해당 위치로 컴파일러가 인라인 함수 코드 전체를 복사하여 대체함.
컴파일러의 최적화 방법에 따라서, 컴파일러가 일반 함수를 인라인 함수로 취급하여 실행 파일로 만들 수 있다는 특징이 있습니다.
- 장점 : 컴파일러가 인라인 함수의 코드 전체를 호출한 코드 위치로 복사하여 대체함 = 실행 상 호출 단계가 줄어 복잡한 과정이 생략되어 오버헤드를 줄여 실행 속도가 빠름.
- 오버헤드 : 프로그램의 실행흐름 도중 동떨어진 위치의 코드를 실행시켜야 할 때, 추가적으로 시간, 메모리, 자원이 사용되는 현상.
- 단점
- 함수의 정의부가 길면 인라인 함수를 사용하여 얻을 수 있는 장점이 줄어듬.
- 여러번 호출하게 되면 컴파일 이후 실행 파일의 크기가 커지게 됨.
반응형
'[Unity] > [C#]' 카테고리의 다른 글
[C#] 비동기 메서드(async, await) (0) | 2022.09.21 |
---|---|
[C#] ConditionalAttribute (0) | 2022.09.20 |
[C#] internal 액세스 한정자 (0) | 2022.09.18 |
[C#] 물음표 연산자 3종류(feat. '?.', '??', '?') (0) | 2022.09.17 |
[C#] try-catch 예외처리 (2) | 2022.09.16 |