Optimization Techniques
Code Motion
- Move invariant computations outside loops to reduce frequency
- Example:
a[n*i+j] → ni=n*i; a[ni+j]
Share Common Subexpressions
- Reuse redundant portions of expressions
- Example:
(i-1)*n, i*n, (i+1)*n; → int in=i*n; in-n, in in+n;
Reduce Procedure Calls
- Avoid costly function calls in loops when result is invariant
- Example: Move
strlen(s) outside loop in int len = strlen(s)
Reduce Memory Accesses
- Minimize memory reads/writes, especially in inner loops
- Example: Accumulate sum in register, write once outside loop
Modern Computing Paradigms
Embedded Systems
- Computers getting smaller and ubiquitous
Internet of Things (IoT)
- Connecting everyday objects to internet
- Applications: smart homes, cities, grids, healthcare, etc.
Big Data and Cloud Computing