Code Optimization
1 Code Optimization
Outline Optimizing blockers Memory alias Side effect in function call Understanding modern Processor Super-scalar Out-of -order execution More Code Optimization techniques Performance Tuning Suggested reading 5.1.57~516
2 Outline • Optimizing Blockers – Memory alias – Side effect in function call • Understanding Modern Processor – Super-scalar – Out-of –order execution • More Code Optimization techniques • Performance Tuning • Suggested reading – 5.1, 5.7 ~ 5.16
5.1 Capabilities and Limitations of Optimizing Compliers Review on 5.3 Program Example 5.4 Eliminating Loop Inefficiencies 5.5 Reducing Procedure Calls 5.6 Eliminating Unneeded Memory References
3 5.1 Capabilities and Limitations of Optimizing Compliers Review on 5.3 Program Example 5.4 Eliminating Loop Inefficiencies 5.5 Reducing Procedure Calls 5.6 Eliminating Unneeded Memory References
Example P387 void combinel(vec ptr v, data t *dest) int ii dest=工DENT; for(i=0;主< vec length(v);立++){ int val get vec element(v, i, &val)i dest=★ dest oper va1;
4 void combine1(vec_ptr v, data_t *dest) { int i; *dest = IDENT; for (i = 0; i < vec_length(v); i++) { int val; get_vec_element(v, i, &val); *dest = *dest OPER val; } } Example P387
Example P388 void combine(vec ptr v, int *dest) int ii int length vec length(v)i ★dest=工DENT; f。r(立=0;i<1 ength;i++){ int val get vec element(v, l, &val)i ★dest=★ dest oper va1;
5 void combine2(vec_ptr v, int *dest) { int i; int length = vec_length(v); *dest = IDENT; for (i = 0; i < length; i++) { int val; get_vec_element(v, i, &val); *dest = *dest OPER val; } } Example P388