CPU duration of the latest dedicated animation-update phase in milliseconds, used by AnimComponentSystem. Excludes the legacy AnimationComponentSystem, which runs in the system update phase. Part of cpuUpdateTime. Available in all builds.
CPU duration of the most recent physics step in milliseconds, including synchronization and contact handling. Normally part of cpuSystemUpdateTime. Multiple manual steps are not accumulated. Zero before any step or when physics is paused through its timeScale property. Available in all builds.
CPU duration of the latest scene render in milliseconds, including prerender and postrender event listeners, hierarchy synchronization, batching and render command submission. Excludes graphics device frameStart/frameEnd work and does not measure GPU execution. Retains the latest measurement when rendering is skipped. Available in all builds.
CPU duration of the latest component systems post-update phase in milliseconds, including script postUpdate callbacks. Part of cpuUpdateTime. Available in all builds.
CPU duration of the latest component systems update phase in milliseconds. Includes script updates, physics and other systems subscribed to the update event. Part of cpuUpdateTime. Available in all builds.
CPU duration of the latest application update in milliseconds, including component systems, application update event listeners and input updates. Excludes graphics device updates. Includes the other CPU update phase timings. Available in all builds.
Total draw calls submitted during the previous frame, published at the start of the next application tick. Available in all builds.
Frame count over the latest approximately one-second reporting interval. Initially zero until an interval completes. Available in all builds.
Interval between application ticks in milliseconds, including time outside the engine. Unaffected by time scaling or delta-time clamping. Available in all builds.
Overall duration of the most recently resolved GPU frame in milliseconds. Available in all builds when GPU profiling is supported and enabled. Returns undefined until a valid timing arrives, when profiling is disabled, or after timing invalidation such as context loss. Results arrive asynchronously and may be several frames old.
WebGL measures a whole-frame timer query. WebGPU measures the span from the first profiled pass beginning to the last pass ending, including gaps between passes. This is elapsed GPU time, not GPU utilization, and is not the sum of potentially overlapping pass durations.
Total primitives submitted during the previous frame, published at the start of the next application tick. Counts triangles, lines and points across all passes, including instances and CPU-authored multi-draw commands. Counts are calculated before GPU clipping and culling.
Available only in debug and profiler builds. Returns undefined in release and minified builds. This is an estimate from draw parameters: GPU-generated indirect draws are excluded, and primitive-restart indices in indexed strips are not inspected. No GPU readback is performed.
Estimated GPU index buffer memory in bytes. Available in all builds.
Estimated GPU storage buffer memory in bytes. Available in all builds. Zero on backends without storage buffers or when none have been allocated.
Estimated GPU texture memory in bytes. Available in all builds.
Total estimated GPU resource memory in bytes: textures, vertex buffers, index buffers, uniform buffers and storage buffers. Available in all builds.
Estimated GPU uniform buffer memory in bytes. Available in all builds. Zero when no tracked uniform buffers have been allocated.
Estimated GPU vertex buffer memory in bytes. Available in all builds.
Read-only performance statistics for an application, accessed through AppBase#stats. Includes frame cadence, CPU phase timings, overall GPU frame timing, and estimated GPU resource memory usage. CPU timings, GPU timings and memory statistics are available in all builds, subject to graphics capabilities. Primitive counting requires a debug or profiler build; see each getter for its availability.
Durations are in milliseconds and memory sizes are in bytes. Values are the latest available measurements, not averages, except for fps, which refreshes approximately once per second. Frame counters are published at the start of the next application tick; CPU timings are updated when their respective phases finish. CPU phases overlap and must not all be added together. CPU timings and counters are initially zero. GPU results arrive asynchronously and can describe an older frame than the CPU measurements.
GPU profiling is disabled by default. Enable it with
app.graphicsDevice.gpuProfiler.enabled = truewhen a profiler exists (see the example below). WebGL requires the disjoint timer query extension; WebGPU requires the timestamp-query feature. Enabling profiling on an unsupported device produces no timings. gpuFrameTime returns undefined when profiling is disabled, unsupported, or no valid result has arrived. Reading stats does not enable profiling. MiniStats also enables GPU profiling when it creates its GPU timer.Memory statistics estimate resources tracked by the application's graphics device, which may be shared by applications. They do not represent total physical GPU memory usage or capacity, and exclude untracked driver overhead and JavaScript memory.
Example
See
AppBase#stats