컴파일 최적화

  • 컴파일러가 수행
  • 코드에서 논리적으로 당연한 내용을 제거
  • 특정 변수에 대해 의존성이 존재하는 연산들을 구별

최적화 방해요소

  • 변수의 수가 늘어날수록 타 변수와의 조합을 통해 논리적 구조가 복잡해짐 -> 변수 개수를 줄이기(상수화)
  • 포인터 사용 -> 메모리 주소는 런타임 때 결정나기 때문에 자제해야 함

Const

  • 형 한정어
  • 상수화
  • 컴파일은 이 변수를 숫자로 인식함
  • 성능향상 가능
  • 인자로 포인터를 받아서 데이터를 읽기만 할때 사용하면 좋음
  • 심볼릭 상수 : 특정 숫자와 변수의 이름을 조합하여 좀 더 의미가 명확해 보이는 상수로 표현, 전처리기로도 가능(#define)
if (score <= 75)
보단
const int cutoff = 75; // 심볼릭 상수
if (score <= cutoff)
  • 상수형 포인터 : 주소값을 상수화
int nData = 0;
const int *pnData = &nData; // 데이터를 상수화
int const *pnData = &nData; // 포인터를 상수화, C++의 참조와 같음

Volatile

  • 형 한정
  • 컴파일러가 수행하는 최적화(연산 생략  등)를 제한
  • 변수와 의존성이 있는 모든 연산이 생략되지 않음
volatile int nData = 0;

__inline

  • 매크로와 같지만, 인자의 형을 설정 가능

함수호출규칙

  • __cdecl(default) : caller가 스택 정리
  • __stdcall : callee가 스택 정리
  • __fastcall : callee가 스택 정리

'💻 Computer Science > C & C++' 카테고리의 다른 글

[C] Makefile & CMake  (0) 2024.01.23
[C] 전처리기  (0) 2024.01.12
[C] 구조체와 공용체  (0) 2024.01.10
[C] 파일 입출력  (0) 2024.01.10
[C] 변수  (0) 2024.01.10