Topics / Inlining and devirtualization

Performance topic

Inlining and devirtualization

Let the compiler see through calls: inline hot functions, replace virtual dispatch with static dispatch, and mark final types.

951proven techniques
74pitfalls: tried, then slower
526repositories
5from papers

Examples from real commits

JasonXuDeveloper/Nino 3.5× Extract loop into a separate non-inlined method to isolate PGO profile for long runs. proof: commit → Dao-AILab/flash-attention 2× Remove runtime branch from TMA load helper to enable inlining and prevent wgmma serialization proof: commit → pocl/pocl 2× Normalize function attributes across all defined functions (strip stack-protector, denormal, strictfp, alwaysinline; unify target-cpu/features) so LLVM's inliner accepts the calls. proof: commit → WebKit/WebKit 1.7× Inline Yarr matcher into DFG/FTL by placing backtracking frame in the outgoing-argument area proof: commit →

Languages

  • C++417
  • C207
  • Rust132
  • Go48
  • C#38
  • Java25

Hardware

  • CPU228
  • x86161
  • ARM43
  • GPU21
  • NVIDIA GPU18

Fields

  • general370
  • compilers195
  • data & compression169
  • graphics89
  • math83

Where these come from

Repositories with the most techniques on this topic in the database:

Shopify/yjit · 14dotnet/runtime · 10k0kubun/llrb · 10PerryTS/perry · 10icedland/iced · 8JasonXuDeveloper/Nino · 8wasmi-labs/wasmi · 8harfbuzz/harfrust · 8blender/cycles · 7v8/v8 · 7

Ask Claude for the full answer

Each technique comes with its bottleneck, measured speedup, trade-offs, conditions and the commit or paper behind it, served to Claude through MCP.

claude mcp add --transport http adtomic https://www.adtomic.co/mcp

Connect Claude Pricing

Related topics

Lookup tablesCache locality and data reorderingMultithreading and work stealingLoop unrolling and instruction-level parallelismGPU kernel fusion