C 최적화 방식

Jongwon·2021년 12월 1일
0

Linux Programming

목록 보기
9/25

모듈 단위 최적화

  • 함수 단위로 실행시간에 차지하는 비율을 계산하여 실행시간이 긴 함수 최적화
    최적화도구
    C++의 Profiler
    Linux의 gprof
    Intel의 Vtune

변수

  • 정수로 계산 후 마지막에 나눗셈을 통한 실수화
  • int보단 unsigned int, 자주사용하는 변수는 register 키워드 제공
  • 나눗셈, 나머지연산은 덧셈,뺄셈,곱셈보다 연산시간이 길다
  • 2의배수 연산은 시프트연산 사용
  • char, short보단 int연산이 낫다.

배열

  • 연산결과를 배열로 저장(문자열) 후 index로 값 받아오는 것이 더 빠르다.

전역변수

  • 전역변수는 멀티코어에서 여러 CPU가 사용하므로 레지스터에 할당하지 않는다. 따라서 지역변수에서 연산이 끝난 후 전역변수에 입력하는 것이 좋다.

포인터

  • 포인터변수는 데이터를 메모리에서 계속 참조하므로, 값이 거의 변하지 않는 것은 지역변수에 넣고 사용하는 것이 낫다.
  • 구조체인자는 포인터로 전달하는 것이 낫다.

비교 연산

  • if~else의 반복보단 binary breakdown, 그것보단 switch를 사용하는 것이 더 효율적이다.
  • switch문은 점프테이블을 만들어서 계산하기 때문에 훨씬 빠르다.
  • switch문을 하나의 배열로 만들 수 있다면 더 효율적이다.

반복문

  • 반복문의 종료값을 0으로 하는것이 더 효율적이다.
  • 반복문 내에서 함수호출보단, 함수에서 반복문 호출이 더 낫다.
  • 반복문의 loop 횟수를 줄일수록 좋다.
  • 반복문을 더이상 진행할 필요가 없다면 break를 해야한다.

매개변수

  • 프로세서마다 적절한 매개변수 개수가 존재한다. 일정 개수 이하면 레지스터에, 초과하면 스택에 저장한다.

매크로

  • 매크로 확장으로 함수를 매크로로 작성하면 실행 시간이 줄어든다.
profile
Backend Engineer

0개의 댓글