code optimization

46
CODE OPTIMIZATION CODE OPTIMIZATION Presented By: Amita das Jayanti bhattacharya Jaistha Upadhyay

Upload: guest9f8315

Post on 25-May-2015

4.466 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Code Optimization

CODE OPTIMIZATIONCODE OPTIMIZATION

Presented By:

Amita das

Jayanti bhattacharya

Jaistha Upadhyay

Page 2: Code Optimization

Design Of a Compiler

Lexical Analysis

Syntax Analysis

Intermediate Code Generation

Code Generation

Code Optimization

Table Mgmt Routine

ErrorHandlingRoutine

Source code

Object code

Page 3: Code Optimization

What is optimization?What is optimization?

In computing, In computing, optimizationoptimization is the process of modifying a is the process of modifying a system to make some aspect of it work more efficiently or system to make some aspect of it work more efficiently or use fewer resources. For instance, a computer program use fewer resources. For instance, a computer program may be optimized so that it executes more rapidly, or is may be optimized so that it executes more rapidly, or is capable of operating with less memory storage or other capable of operating with less memory storage or other resources, or draw less power. The system may be a single resources, or draw less power. The system may be a single computer program, a collection of computers or even an computer program, a collection of computers or even an entire network such as the internet. entire network such as the internet.

Page 4: Code Optimization
Page 5: Code Optimization

Levels' of optimizationLevels' of optimizationOptimization can occur at a number of 'levels':Optimization can occur at a number of 'levels': Design levelDesign level

At the highest level, the design may be optimized to At the highest level, the design may be optimized to make best use of the available resources. The make best use of the available resources. The implementation of this design will benefit from the implementation of this design will benefit from the use of suitable efficient algorithms and the use of suitable efficient algorithms and the implementation of these algorithms will benefit from implementation of these algorithms will benefit from writing good quality code. The architectural design writing good quality code. The architectural design of a system overwhelmingly affects its performance. of a system overwhelmingly affects its performance. The choice of algorithm affects efficiency more than The choice of algorithm affects efficiency more than any other item of the design.any other item of the design.

Compile levelCompile level

Use of an optimizing compiler tends to ensure that Use of an optimizing compiler tends to ensure that the executable program is optimized at least as much the executable program is optimized at least as much as the compiler can predict.as the compiler can predict.

Page 6: Code Optimization

Assembly levelAssembly level

At the lowest level, writing code using an Assembly At the lowest level, writing code using an Assembly language designed for a particular hardware platform will language designed for a particular hardware platform will normally produce the most efficient code since the normally produce the most efficient code since the programmer can take advantage of the full repertoire of programmer can take advantage of the full repertoire of machine instructions. The operating systems of most machine instructions. The operating systems of most machines has been traditionally written in Assembler code machines has been traditionally written in Assembler code for this reason.for this reason.

RuntimeRuntime

Just In Time Compiler and assembler programmers are Just In Time Compiler and assembler programmers are able to perform runtime optimization.able to perform runtime optimization.

Page 7: Code Optimization

When to optimize ?When to optimize ?

Optimization is often performed at the end of the Optimization is often performed at the end of the development stagedevelopment stage since itsince it

• reduces readabilityreduces readability• adds code that is used to improve the adds code that is used to improve the

performance. performance.

Page 8: Code Optimization

Criteria For optimization

An optimization must preserve the meaning of a program :

-Cannot change the output produced for any input

-Can not introduce an error

optimization should, on average, speed up programs

Transformation should be worth the effort

Page 9: Code Optimization

Improvements can be made at various phases:Source Code:

-Algorithms transformations can produce spectacular improvements

-Profiling can be helpful to focus a programmer’s attention on important code.

Intermediate Code:

-Compiler can improve loops, procedure calls and address calculations

-Typically only optimizing compilers include this phase

Target Code:

-Compilers can use registers efficiently

-Peephole transformation can be applied

Page 10: Code Optimization

Types of Code optimizationTypes of Code optimization

Common Sub-expression Common Sub-expression RemovalRemoval

Dead Code OptimizationDead Code Optimization Loop OptimizationLoop Optimization

Page 11: Code Optimization

Common Sub expression eliminationCommon Sub expression elimination

Common Sub expression elimination is a optimization that searches for instances of identical expressions (i.e they all evaluate the same value), and analyses whether it is worthwhile replacing with a single variable holding the computed value.

a=b * c + g

d=b * c * d

temp=b * c

a=temp + g

d=temp * d

Page 12: Code Optimization

Dead Code elimination is a compiler optimization that removes Dead Code elimination is a compiler optimization that removes code that does not affect a program. Removing such code has two code that does not affect a program. Removing such code has two

benefits It shrinks program size, an important consideration in benefits It shrinks program size, an important consideration in some contexts. It lets the running program avoid executing some contexts. It lets the running program avoid executing

irrelevant operations, which reduces its running time.irrelevant operations, which reduces its running time.

Dead Code elimination is of two types

Unreachable Code

Redundant statement

Dead code Optimization:

Page 13: Code Optimization

Unreachable Code

In Computer Programming, Unreachable Code or dead code is code that exists in the source code of a program but can never be executed.

Program Code

If (a>b)

m=a

elseif (a<b)

m=b

elseif (a==b)

m=0

else

m=-1

Optimized Code

If (a>b)

m=a

elseif (a<b)

m=b

else

m=0

Page 14: Code Optimization

Redundant Code

Redundant Code is code that is executed but has no effect on the output from a program

main(){

int a,b,c,r;

a=5;

b=6;

c=a + b;

r=2;

r++;

printf(“%d”,c);

}

Adding time & space complexity

Page 15: Code Optimization

Loop optimizationLoop optimization

Loop optimization plays an important role in improving the performance of the source code by reducing overheads associated with executing loops.

Loop Optimization can be done by removing:

• Loop invariant

• Induction variables

Page 16: Code Optimization

Loop InvariantLoop Invariant

i = 1

s= 0

do{

s= s + i

a =5

i = i + 1

{

while (i < =n)

i = 1

s= 0

a =5

do{

s= s + i

i = i + 1

{

while (i < =n)

Bringing a=5 outside the do while loop, is called code motion.

Page 17: Code Optimization

Induction variablesInduction variables

i = 1

s= 0

S1=0

S2=0

while (i < =n)

{

s= s + a[ i ]

t1 = i * 4

s= s + b[ t1 ]

t2 = t1 +2

s2= s2 + c[ t2 ]

i = i + 1

}

i = 1

s= 0

S1=0

S2=0

t2=0

while (i < =n)

{

s= s + a[ i ]

t1 = t1+ 4

s= s + b[ t1 ]

s2= s2 + c[t1 +2 ]

i = i + 1

}

t1,t2 are induction variables. i is inducing t1 and t1 is inducing t2

“+” replaced “ * ”, t1 was made independent of i

Page 18: Code Optimization
Page 19: Code Optimization
Page 20: Code Optimization
Page 21: Code Optimization
Page 22: Code Optimization

Common Sub-expression RemovalCommon Sub-expression Removal

It is used to remove redundant computations which It is used to remove redundant computations which usually improves the execution time of a program.usually improves the execution time of a program.

Page 23: Code Optimization
Page 24: Code Optimization
Page 25: Code Optimization
Page 26: Code Optimization
Page 27: Code Optimization
Page 28: Code Optimization
Page 29: Code Optimization

Three Address Code of Three Address Code of Quick SortQuick Sort

i = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto (5) < v goto (5)

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto (9) > v goto (9)

if i >= j goto (23)if i >= j goto (23)

tt6 6 = 4 * i = 4 * i

x = a[tx = a[t66]]

11

22

33

44

55

66

77

88

99

1010

1111

1212

1313

1414

1515

tt77 = 4 * I = 4 * I

tt88 = 4 * j = 4 * j

tt99 = a[t = a[t88]]

a[ta[t77] = t] = t99

tt1010 = 4 * j = 4 * j

a[ta[t1010] = x] = x

goto (5)goto (5)

tt1111 = 4 * I = 4 * I

x = a[tx = a[t1111]]

tt1212 = 4 * i = 4 * i

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[ta[t1212] = t] = t1414

tt1515 = 4 * n = 4 * n

a[ta[t1515] = x] = x

1616

1717

1818

1919

2020

2121

2222

2323

2424

2525

2626

2727

2828

2929

3030

Page 30: Code Optimization

Find The Basic BlockFind The Basic Blocki = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto (5) < v goto (5)

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto (9) > v goto (9)

if i >= j goto (23)if i >= j goto (23)

tt6 6 = 4 * i = 4 * i

x = a[tx = a[t66]]

11

22

33

44

55

66

77

88

99

1010

1111

1212

1313

1414

1515

tt77 = 4 * I = 4 * I

tt88 = 4 * j = 4 * j

tt99 = a[t = a[t88]]

a[ta[t77] = t] = t99

tt1010 = 4 * j = 4 * j

a[ta[t1010] = x] = x

goto (5)goto (5)

tt1111 = 4 * i = 4 * i

x = a[tx = a[t1111]]

tt1212 = 4 * i = 4 * i

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[ta[t1212] = t] = t1414

tt1515 = 4 * n = 4 * n

a[ta[t1515] = x] = x

1616

1717

1818

1919

2020

2121

2222

2323

2424

2525

2626

2727

2828

2929

3030

Page 31: Code Optimization

Flow GraphFlow Graphi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

tt6 6 = 4 * i = 4 * i

x = a[tx = a[t66]]

tt77 = 4 * i = 4 * i

tt88 = 4 * j = 4 * j

tt99 = a[t = a[t88]]

a[ta[t77] = t] = t99

tt1010 = 4 * j = 4 * j

a[ta[t1010] = x] = x

goto Bgoto B22

tt1111 = 4 * i = 4 * i

x = a[tx = a[t1111]]

tt1212 = 4 * i = 4 * i

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[ta[t1212] = t] = t1414

tt1515 = 4 * n = 4 * n

a[ta[t1515] = x] = x

B1

B2

B3

B4

B5 B6

Page 32: Code Optimization

Common Subexpression Common Subexpression EliminationEliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

tt6 6 = 4 * i = 4 * i

x = a[tx = a[t66]]

tt77 = 4 * i = 4 * i

tt88 = 4 * j = 4 * j

tt99 = a[t = a[t88]]

a[ta[t77] = t] = t99

tt1010 = 4 * j = 4 * j

a[ta[t1010] = x] = x

goto Bgoto B22

tt1111 = 4 * i = 4 * i

x = a[tx = a[t1111]]

tt1212 = 4 * i = 4 * i

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[ta[t1212] = t] = t1414

tt1515 = 4 * n = 4 * n

a[ta[t1515] = x] = x

B1

B2

B3

B4

B5 B6

Page 33: Code Optimization

Common Subexpression Common Subexpression EliminationEliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

tt6 6 = 4 * i = 4 * i

x = a[tx = a[t66]]

tt88 = 4 * j = 4 * j

tt99 = a[t = a[t88]]

a[a[tt66] = t] = t99

tt1010 = 4 * = 4 *

jj

a[ta[t1010] = x] = x

goto Bgoto B22

tt1111 = 4 * i = 4 * i

x = a[tx = a[t1111]]

tt1212 = 4 * i = 4 * i

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[ta[t1212] = t] = t1414

tt1515 = 4 * n = 4 * n

a[ta[t1515] = x] = x

B1

B2

B3

B4

B5 B6

Page 34: Code Optimization

Common Subexpression Common Subexpression EliminationEliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

tt6 6 = 4 * i = 4 * i

x = a[tx = a[t66]]

tt88 = 4 * j = 4 * j

tt99 = a[t = a[t88]]

a[a[tt66] = t] = t99

a[a[tt88] = x] = x

goto Bgoto B22

tt1111 = 4 *i = 4 *i

x = a[tx = a[t1111]]

tt1212 = 4 * i = 4 * i

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[ta[t1212] = t] = t1414

tt1515 = 4 * n = 4 * n

a[ta[t1515] = x] = x

B1

B2

B3

B4

B5 B6

Page 35: Code Optimization

Common Subexpression Common Subexpression EliminationEliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

tt6 6 = 4 * i = 4 * i

x = a[tx = a[t66]]

tt88 = 4 * j = 4 * j

tt99 = a[t = a[t88]]

a[a[tt66] = t] = t99

a[a[tt88] = x] = x

goto Bgoto B22

tt1111 = 4 * i = 4 * i

x = a[tx = a[t1111]]

tt1212 = 4 * i = 4 * i

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[ta[t1212] = t] = t1414

tt1515 = 4 * n = 4 * n

a[ta[t1515] = x] = x

B1

B2

B3

B4

B5 B6

Page 36: Code Optimization

Common Subexpression Common Subexpression EliminationEliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

tt6 6 = 4 * i = 4 * i

x = a[tx = a[t66]]

tt88 = 4 * j = 4 * j

tt99 = a[t = a[t88]]

a[a[tt66] = t] = t99

a[a[tt88] = x] = x

goto Bgoto B22

tt1111 = 4 * i = 4 * i

x = a[tx = a[t1111]]

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[a[tt1111] = t] = t1414

tt1515 = 4 * n = 4 * n

a[ta[t1515] = x] = x

B1

B2

B3

B4

B5 B6

Page 37: Code Optimization

Common Subexpression Common Subexpression EliminationEliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

tt6 6 = 4 * i = 4 * i

x = a[tx = a[t66]]

tt88 = 4 * j = 4 * j

tt99 = a[t = a[t88]]

a[a[tt66] = t] = t99

a[a[tt88] = x] = x

goto Bgoto B22

tt1111 = 4 * i = 4 * i

x = a[tx = a[t1111]]

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[a[tt1111] = t] = t1414

a[a[tt1313] = x] = x

B1

B2

B3

B4

B5 B6

Page 38: Code Optimization

Common Subexpression Common Subexpression EliminationEliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

tt6 6 = 4 * i = 4 * i

x = a[tx = a[t66]]

tt88 = 4 * j = 4 * j

tt99 = a[t = a[t88]]

a[a[tt66] = t] = t99

a[a[tt88] = x] = x

goto Bgoto B22

tt1111 = 4 * i = 4 * i

x = a[tx = a[t1111]]

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[a[tt1111] = t] = t1414

a[a[tt1313] = x] = x

B1

B2

B3

B4

B5 B6

Page 39: Code Optimization

Common Subexpression Common Subexpression EliminationEliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

x = a[x = a[tt22]]

tt88 = 4 * j = 4 * j

tt99 = a[t = a[t88]]

a[a[tt22] = t] = t99

a[a[tt88] = x] = x

goto Bgoto B22

tt1111 = 4 * i = 4 * i

x = a[tx = a[t1111]]

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[a[tt1111] = t] = t1414

a[a[tt1313] = x] = x

B1

B2

B3

B4

B5 B6

Page 40: Code Optimization

Common Subexpression Common Subexpression EliminationEliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

x = tx = t3 3

tt88 = 4 * j = 4 * j

tt99 = a[t = a[t88]]

a[a[tt22] = t] = t99

a[a[tt88] = x] = x

goto Bgoto B22

tt1111 = 4 * i = 4 * i

x = a[tx = a[t1111]]

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[a[tt1111] = t] = t1414

a[a[tt1313] = x] = x

B1

B2

B3

B4

B5 B6

Page 41: Code Optimization

Common Subexpression Common Subexpression EliminationEliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

x = tx = t3 3

a[a[tt22] = t] = t55

a[a[tt44] = x] = x

goto Bgoto B22

tt1111 = 4 * i = 4 * i

x = a[tx = a[t1111]]

tt1313 = 4 * n = 4 * n

tt1414 = a[t = a[t1313]]

a[a[tt1111] = t] = t1414

a[a[tt1313] = x] = x

B1

B2

B3

B4

B5 B6

Page 42: Code Optimization

Common Subexpression Common Subexpression EliminationEliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

x = tx = t3 3

a[a[tt22] = t] = t55

a[a[tt44] = x] = x

goto Bgoto B22

x = tx = t33

tt1414 = a[t = a[t11]]

a[a[tt22] = t] = t1414

a[a[tt11] = x] = x

B1

B2

B3

B4

B5 B6

Similarly for B6

Page 43: Code Optimization

Dead Code EliminationDead Code Eliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

x = tx = t3 3

a[a[tt22] = t] = t55

a[a[tt44] = x] = x

goto Bgoto B22

x = tx = t33

tt1414 = a[t = a[t11]]

a[a[tt22] = t] = t1414

a[a[tt11] = x] = x

B1

B2

B3

B4

B5 B6

Page 44: Code Optimization

Dead Code EliminationDead Code Eliminationi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

a[a[tt22] = t] = t55

a[a[tt44] = t] = t33

goto Bgoto B22

tt1414 = a[t = a[t11]]

a[a[tt22] = t] = t1414

a[a[tt11] = t] = t33

B1

B2

B3

B4

B5 B6

Page 45: Code Optimization

Reduction in StrengthReduction in Strengthi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

i = i + 1i = i + 1

tt22 = 4 * i = 4 * i

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

j = j – 1j = j – 1

tt44 = 4 * j = 4 * j

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

a[a[tt22] = t] = t55

a[a[tt44] = t] = t33

goto Bgoto B22

tt1414 = a[t = a[t11]]

a[a[tt22] = t] = t1414

a[a[tt11] = t] = t33

B1

B2

B3

B4

B5 B6

Page 46: Code Optimization

Reduction in StrengthReduction in Strengthi = m - 1i = m - 1

j = nj = n

tt1 1 =4 * n=4 * n

v = a[tv = a[t11]]

tt2 2 = 4 * i= 4 * i

tt44 = 4 * j = 4 * j

tt22 = t = t22 + 4 + 4

tt33 = a[t = a[t22]]

if tif t33 < v goto B < v goto B22

tt44 = t = t44 - 4 - 4

tt55 = a[t = a[t44]]

if tif t55 > v goto B > v goto B33

if i >= j goto B6

a[a[tt22] = t] = t55

a[a[tt44] = t] = t33

goto Bgoto B22

tt1414 = a[t = a[t11]]

a[a[tt22] = t] = t1414

a[a[tt11] = t] = t33

B1

B2

B3

B4

B5 B6