SlideShare a Scribd company logo
컴파일러의 최적화
 전략 이해(1)
    김성익(noerror@hitel.net)
               2005.04.01
개요
• 빠른 코드, 가독성이 좋은 소스
• 빠른 코드, 컴파일러가 좋아하는 소스

• 컴파일러 최적화에 따른 프로그래밍 전
  략
컴파일러
• 컴파일러의 일반적인 기능



• 언어 컴파일링의 단계
최적화
• 코드 최적화의 구성
Common Subexpression
    Elimination (1)
• 항상 같은 결과는 내는 수식을 제거한다.
 수식이 중복되더라도 가독성 좋은 코드를 작성한다
Common Subexpression
     Elimination (2)
• 왜 상수함수를 사용하면 좋나요 ?
 결과가 동일하기 때문에 함수 필요한 경우 호출 횟수
 를 줄인다
Copy Propagation
• 결과의 차이가 없고, 연산을 줄이는 경
  우 변수를 치환한다
 최적화를 위해서 일부러 변수를 줄일 필요는 없다.
Constant Propagation
• 변수가 상수를 담고 있는 경우 상수로
  치환한다
Algebraic Identities
• 결과가 명확한 수식은 가벼운 연산으로
  치환한다.
 의미상 필요한 공식이라면 일부러 제거하거나 변형하
 지 않아도 된다.
DeadCode Elimination
• 기능을 하지 않는 코드는 제거한다.
 참조되지 않는 함수, 코드 모두
CodeMotion
• 루프 안의 코드 중 변화가 없다고 판단
  되는 코드는 루프 밖으로 이동
 가독성을 헤치면서 복잡한 연산을 루프 밖으로 이동
 시킬 필요가 없다
Induction Variable
• 루프안에서 일정하게 증가하는 값은 상
  수 덧셈으로 치환한다.
 치환이 명백한 경우 가독성을 헤치면서 값싼 연산자
 로 치환할 필요가 없다
Loop Unrolling
• 짧은 루프에서 비교문의 비중이 너무 큰
  경우 루프를 Unroll한다.
 똑똑한 컴파일러는 해주려나 ?
중간 결과
• 최적화를 해야 하는 것, 하지 않아도 되
  는것

• VS .net 전역 최적화

More Related Content

PDF
함수형 프로그래밍
PDF
Why Functional Programming Matters
PPTX
OpenCV 에서 OpenCL 살짝 써보기
PPTX
15_TextureAtlas
PDF
Ch11
PPT
속도의 필요성
PPT
어플리케이션 성능 최적화 기법
함수형 프로그래밍
Why Functional Programming Matters
OpenCV 에서 OpenCL 살짝 써보기
15_TextureAtlas
Ch11
속도의 필요성
어플리케이션 성능 최적화 기법

Similar to 05_컴파일러최적화전략(1) (20)

PPTX
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은
PPTX
C++ 코딩의 정석.pptx
PPTX
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
PPTX
깨끗한 코드 (클린 코드, Clean Code)
PDF
MEC++ 3,4
PPTX
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
PDF
당신의 디버깅에 니코니코니
PDF
델파이 코드 마이그레이션 Step by Step
PPTX
Clean code(02)
PDF
C++ 코드 품질 관리 비법
PDF
M3 4 1
PPTX
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
PDF
Chean code chapter 1
PPTX
클린코드와 TDD
PDF
7 8 1
PDF
김재석, C++ 게임 개발자를 위한 c# 활용 기법, 월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전...
PDF
애자일 프랙티스
PPTX
Code complete chapter 19, 20 organize
PDF
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
PDF
Effective C++ Chapter 1 Summary
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은
C++ 코딩의 정석.pptx
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
깨끗한 코드 (클린 코드, Clean Code)
MEC++ 3,4
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
당신의 디버깅에 니코니코니
델파이 코드 마이그레이션 Step by Step
Clean code(02)
C++ 코드 품질 관리 비법
M3 4 1
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
Chean code chapter 1
클린코드와 TDD
7 8 1
김재석, C++ 게임 개발자를 위한 c# 활용 기법, 월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전...
애자일 프랙티스
Code complete chapter 19, 20 organize
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
Effective C++ Chapter 1 Summary
Ad

More from noerror (20)

PPTX
11_웹서비스활용
PDF
NDC08_실시간비주얼그래프편집
PDF
NDC12_Lockless게임서버설계와구현
PPTX
KCGS11_실시간 피사계 심도 렌더링 개선 기법
PDF
11_통계 자료분석 입문
PPTX
11_빠른 개발 가능한 레벨 편집 시스템
PPTX
11_SH를 이용한 실시간 투명 근사법
PDF
ICON08_게임 애니메이션 최적화 기법
PDF
08_Marching Cube Terrains
PDF
08_게임 물리 프로그래밍 가이드
PDF
08_플래시 맛보기
PDF
08_애니메이션고등학교 게임과 특강
PDF
08_Wxwidgets 소개
PDF
07_PhysX 강체물리 입문
PDF
07_스케일폼 소개
PDF
07_Visual Shader Editor
PDF
06_HDR 소개
PDF
06_게임엔진 활용팁
PDF
06_게임엔진구성
PDF
06_자동차물리입문(1)
11_웹서비스활용
NDC08_실시간비주얼그래프편집
NDC12_Lockless게임서버설계와구현
KCGS11_실시간 피사계 심도 렌더링 개선 기법
11_통계 자료분석 입문
11_빠른 개발 가능한 레벨 편집 시스템
11_SH를 이용한 실시간 투명 근사법
ICON08_게임 애니메이션 최적화 기법
08_Marching Cube Terrains
08_게임 물리 프로그래밍 가이드
08_플래시 맛보기
08_애니메이션고등학교 게임과 특강
08_Wxwidgets 소개
07_PhysX 강체물리 입문
07_스케일폼 소개
07_Visual Shader Editor
06_HDR 소개
06_게임엔진 활용팁
06_게임엔진구성
06_자동차물리입문(1)
Ad

05_컴파일러최적화전략(1)