Code Optimization

(最適化)

14th lecture, July 8, 2016

Language Theory and Compilers

http://www.sw.it.aoyama.ac.jp/2016/Compiler/lecture14.html

Martin J. Dürst

AGU

© 2005-15 Martin J. Dürst 青山学院大学

Today's Schedule

 

Remaining Schedule

 

Summary of Previous Lecture

 

Goals of Optimization

 

Optimization Methods

 

Optimization Techniques (1)

Repeatedly try to use different techniques to continuously optimize the code further

 

Optimization Techniques (2)

Make execution faster even if the amout of code may increase

 

Optimization Techniques (3)

Highly dependent on machine type

 

Example of Instruction Reordering

Expression: 5 * a

Before optimization (LOAD (memory access) takes time):

        CONST   R1, 5
LOAD R2, a
MUL R3, R1, R2

After optimization (during LOAD, CONST can also be executed):

        LOAD    R2, a
CONST R1, 5
MUL R3, R1, R2

 

Dynamic Compilation

 

Examples of Actual Optimization

source

without optimization (gcc -O0 -S code.c)

with optimization (gcc -O1 -S code.c)

much more optimized (gcc -O3 -S code.c, with parallel processing instructions)

(assembly language for Intel PCs (CISC))

Optimization options for gcc: English, Japanese

 

授業改善のための学生アンケート

WEB アンケート

お願い: 自由記述に必ず良かった点、問題点を具体的に書きましょう

(悪い例: 発音が分かりにくい; 良い例: さ行が濁っているかどうか分かりにくい)

 

Glossary

peephole optimization
ピープホール最適化
control flow analysis
制御フロー解析
basic block
基本ブロック
data flow analysis
データフロー解析
constant folding
静式評価、定数たたみこみ
constant propagation
定数伝播
dead code elimination
無用命令の削除
function inlining
関数呼び出しの展開
loop unrolling
繰り返しの展開
dynamic compilation
動的コンパイル