Optimization Techniques
Learning Objectives
- Optimize code based on measured bottlenecks.
- Apply safe and maintainable optimizations.
- Validate gains with benchmarks.
Optimization Order
- Measure current behavior.
- Improve algorithmic complexity first.
- Reduce repeated work with caching/memoization.
- Optimize data structure choice.
- Re-measure and verify no regression.
Useful Techniques
Swapping Operations
Swapping values is a fundamental operation. While using a temporary variable is common and clear, some languages offer atomic or optimized ways to swap. Minimizing unnecessary swaps in sorting algorithms is a key performance win.
Bitwise Operations
Bitwise operations (AND, OR, XOR, shifts) are extremely fast as they operate directly on the binary representation of numbers. They can be used for:
- Efficiently checking for odd/even numbers.
- Swapping numbers without a temporary variable (XOR swap).
- Fast multiplication or division by powers of two.
Memory Optimization
Reducing memory footprint can improve performance by increasing cache hits and reducing garbage collection frequency.
- Reuse objects instead of creating new ones.
- Choose data structures that use less overhead.
- Use primitive types instead of wrapper objects where possible.
Summary
Optimize where it matters most, and always verify with data.