25
Tour of common optimizations

Tour of common optimizations

  • Upload
    breena

  • View
    17

  • Download
    1

Embed Size (px)

DESCRIPTION

Tour of common optimizations. Simple example. foo(z) { x := 3 + 6; y := x – 5 return z * y }. Simple example. foo(z) { x := 3 + 6; y := x – 5 return z * y }. Another example. x := a + b; ... y := a + b;. Another example. x := a + b; ... - PowerPoint PPT Presentation

Citation preview

Page 1: Tour of common optimizations

Tour of common optimizations

Page 2: Tour of common optimizations

Simple example

foo(z) {

x := 3 + 6;

y := x – 5

return z * y

}

Page 3: Tour of common optimizations

Simple example

foo(z) {

x := 3 + 6;

y := x – 5

return z * y

}

Page 4: Tour of common optimizations

Another example

x := a + b;

...

y := a + b;

Page 5: Tour of common optimizations

Another example

x := a + b;

...

y := a + b;

Page 6: Tour of common optimizations

Another example

if (...) { x := a + b; }

...

y := a + b;

Page 7: Tour of common optimizations

Another example

if (...) { x := a + b; }

...

y := a + b;

Page 8: Tour of common optimizations

Another example

x := y...z := z + x

Page 9: Tour of common optimizations

Another example

x := y...z := z + x

Page 10: Tour of common optimizations

Another example

x := y...z := z + y

What if we run CSE now?

Page 11: Tour of common optimizations

Another example

x := y...z := z + y

What if we run CSE now?

Page 12: Tour of common optimizations

Another example

x := y**z

...

x := ...

Page 13: Tour of common optimizations

Another example

• Often used as a clean-up pass

x := y**z

...

x := ...

x := yz := z + x

x := yz := z + y

Copy prop DAEx := yz := z + y

Page 14: Tour of common optimizations

Another example

if (false) {

...

}

Page 15: Tour of common optimizations

Another example

if (false) {

...

}

Page 16: Tour of common optimizations

Another example

• In Java:

a = new int [10];for (index = 0; index < 10; index ++) { a[index] = 100;}

Page 17: Tour of common optimizations

Another example

• In “lowered” Java:

a = new int [10];for (index = 0; index < 10; index ++) { if (index < 0 || index >= a.length()) { throw OutOfBoundsException; } a[index] = 0;}

Page 18: Tour of common optimizations

Another example

• In “lowered” Java:

a = new int [10];for (index = 0; index < 10; index ++) { if (index < 0 || index >= a.length()) { throw OutOfBoundsException; } a[index] = 0;}

Page 19: Tour of common optimizations

Another example

p := &x;*p := 5y := x + 1;

Page 20: Tour of common optimizations

Another example

p := &x;*p := 5y := x + 1;

x := 5;*p := 3y := x + 1; ???

Page 21: Tour of common optimizations

Another example

for j := 1 to N for i := 1 to M a[i] := a[i] + b[j]

Page 22: Tour of common optimizations

Another example

for j := 1 to N for i := 1 to M a[i] := a[i] + b[j]

Page 23: Tour of common optimizations

Another example

area(h,w) { return h * w }

h := ...;w := 4;a := area(h,w)

Page 24: Tour of common optimizations

Another example

area(h,w) { return h * w }

h := ...;w := 4;a := area(h,w)

Page 25: Tour of common optimizations

Optimization themes

• Don’t compute if you don’t have to– unused assignment elimination

• Compute at compile-time if possible– constant folding, loop unrolling, inlining

• Compute it as few times as possible– CSE, PRE, PDE, loop invariant code motion

• Compute it as cheaply as possible– strength reduction

• Enable other optimizations– constant and copy prop, pointer analysis

• Compute it with as little code space as possible– unreachable code elimination