Inlining – The Ultimate Optimisation
4 months ago
- #compiler-optimization
- #inlining
- #performance
- Inlining is a fundamental compiler optimization that enables other optimizations by copying function bodies into call sites.
- Inlining allows the compiler to make local changes, propagate constants, and eliminate dead branches, leading to more efficient code.
- An example shows how inlining a `change_case` function into `make_upper` simplifies the assembly code by leveraging constant propagation.
- Inlining can increase code size, so compilers use heuristics to decide when to inline based on perceived benefits.
- Branch predictability can be affected by inlining, sometimes improving or worsening performance depending on the context.
- Function visibility is crucial for inlining; the compiler needs the function definition, not just the declaration, to inline it.
- Inlining is heuristic-driven, with different compilers making varying decisions, which can lead to performance regressions in some cases.
- Despite drawbacks, inlining is a powerful enabling optimization that allows deeper transformations beyond simple call overhead reduction.