TA logoThe Technical Artist
Home/Unreal Engine/Performance/Profiling
perf 01
performance

Profiling & Finding Bottlenecks

Workingguide~2 min readreviewed 2026-07-05

First find where the frame is actually stuck: CPU, Render Thread, or GPU. Then pick the right tool instead of guessing.

1.1Profile Under Honest Conditions

Placeholder with instructions to screenshot the stat unit overlay
placeholder - stat unit in a real level

Editor-viewport numbers lie. Before trusting any measurement: disable VSync and frame limits (t.MaxFPS 0, VSync off), build lighting, profile in Standalone or a packaged Test build (Development builds carry overhead; Shipping hides the stats), test a repeatable camera path, and let shaders finish compiling first.

1.2Stat Unit - The Triage Tool

Decision tree from stat unit to game, draw or GPU bound
fig 08 - the triage tree
Console
stat unit -> Frame / Game / Draw / GPU times
stat gpu -> per-pass GPU costs
stat game -> game thread breakdown
stat scenerendering -> draw calls, render thread detail
stat streaming -> texture pool pressure
memreport -full -> memory snapshot to log

Read stat unit like this: Frame is total; whichever of Game (game thread - gameplay, BP, animation), Draw (render thread - draw call submission), or GPU is closest to Frame is your bottleneck. The other numbers are effectively waiting.

Bound onTypical causesGo to
GameTicks, Blueprint logic, animation, physics, spawningCPU & Blueprints
DrawToo many draw calls / components / dynamic shadowsMeshes & LODs
GPUShaders, overdraw, lighting, shadows, resolution, postMaterials / Lighting

1.3Inside The GPU Frame

stat gpu (or ProfileGPU / Ctrl+Shift+,) breaks the GPU frame into passes: BasePass (opaque materials), Shadow Depths, Lumen, Nanite, Translucency, Post Processing. The biggest number tells you which chapter of this section to read. For pixel-level forensics, capture a frame in RenderDoc or PIX.

1.4Unreal Insights - The Real Profiler

Placeholder with instructions to screenshot an Unreal Insights timeline
placeholder - a frame under the microscope

For anything beyond triage, Unreal Insights records a full timeline trace (-trace=default on launch, or the Trace bar in editor). It answers the questions stat overlays can't: what exactly ran this frame, in what order, on which thread, and how long each scope took. Hitches that vanish when you look at averages are found here.

1.5Memory Is Performance Too

Placeholder with instructions to screenshot a Size Map
placeholder - the size map never lies

stat streaming shows texture pool pressure; memreport -full dumps a full breakdown; the Size Map shows per-asset footprints. Blurry textures usually mean the streaming pool is over budget - fix texture sizes before raising the pool. Reference chains (that innocent prop Blueprint hard-referencing half the game) are found with the Reference Viewer - or the Asset Health Dashboard.

Habit

Save a baseline trace and stat screenshot before any optimization pass. You can't prove a win without a before.