wolfpld/tracy

Developer Tools

A frame and sampling profiler for games and native apps that shows per-frame CPU/GPU, memory and lock costs in real time.

17,038
1,227
C++
NOASSERTION
6 years old

Tracy is worth a look if you already suspect a frame-time problem and want to see where the milliseconds go, not just which functions are hot. It is an instrumentation-first profiler with a separate viewer, so the meaningful cost is wiring the client into your build and annotating the scopes you care about.

The problem

A team wants to explain why a frame occasionally takes twice as long, or where a hitch comes from once per second. A conventional sampling profiler gives a function list, but it does not line up work with the frame that produced it, so CPU spikes, GPU submissions, allocations and lock waits end up in separate investigations. With Tracy, the workflow changes at the point where you mark the frame and the interesting scopes: those events are captured together and shown against the frame timeline in a live viewer. The result is a per-frame account of where time went, which is what you need to decide whether the next fix is in gameplay code, rendering or synchronisation.

What's different

Tracy's core is a client library compiled into the target application plus a standalone profiler connected over the network. Direct integrations are documented for C, C++, Lua, Python and Fortran, and the README points to community bindings for Rust, Zig, C#, OCaml and Odin project instructions. Captured data covers CPU zones, GPU work across OpenGL, Vulkan, Direct3D 11/12, Metal, OpenCL, CUDA and WebGPU, memory allocations, locks, context switches and frame-attributed screenshots. Bringing these into one timeline is the practical benefit: you can correlate a long frame with the allocation or GPU submission that happened inside it instead of stitching tools together.

The trade-off is that this is not a drop-in sampling profiler. You add macros to log functions and scopes, which a commenter on Hacker News described as roughly 50 nanoseconds per macro and noted that this is why the tool is not in the same category as automatic samplers such as Superluminal or VerySleepy commenter report. Another commenter asked whether Tracy also samples and recalled that setup was fiddly on Windows commenter question; the README does advertise sampling as part of the hybrid design, so the practical question is configuration effort rather than absence of the feature. Expect to invest in annotations before the data becomes useful.

Who should try it

A good fit is a game or graphics team already able to build the client into their engine and willing to annotate frame boundaries and a few subsystems; the payoff is a unified view of CPU, GPU, memory and locks. It also suits a developer profiling a native application where frame pacing matters and a sampling-only view has been too coarse. A poor fit is someone who wants zero-code-change profiling of an arbitrary binary, or who cannot add a client library to the build. Teams that cannot run a separate viewer and connect to the target will also need to check the WebAssembly demo workflow first interactive demo.

Requirements and limitations

The main setup cost is integration: the client must be compiled into the application and the viewer built or downloaded. The README links a PDF covering usage and build instructions documentation and prebuilt Windows x64 binaries in releases releases; other platforms are built from source, so you need a working C++ toolchain. GPU coverage depends on the graphics API you use and the corresponding Tracy support, so validate that your API path is covered before assuming a complete picture.

Ongoing upkeep matters too. Instrumentation macros accumulate in hot code, and keeping them useful means deciding which scopes stay and reviewing the overhead they add. The community language bindings are third-party projects, so their compatibility with a given Tracy release needs checking rather than assuming it follows the core client.

HotRepo's take

HotRepo has only one daily-board observation: 2026-10-28, when Tracy had 17,036 stars and gained 9 that day, placing it on the new-repository board. That single snapshot cannot establish whether interest is rising, fading or sustained, and the repository dates from 2020, so age is not maturity evidence either. Hacker News discussion is more telling: a 2024 thread reached 198 points and 27 comments, including detailed praise from one commenter and a beginner finding the WebAssembly demo responsive discussion. The specific thing to verify before adopting is whether your platform and graphics API have a documented path in the PDF and current release notes, since that determines whether the integration is a day's work or an ongoing porting project.

Written by AI from the project's README, updated October 28, 2026. The project's own docs are the source of truth.

Hacker News

Tracy: A real time, nanosecond resolution frame profiler
▲ 198 · 27 comments · September 24, 2024
Tracy Profiler – a real-time, nanosecond resolution frame profiler
▲ 119 · 12 comments · May 11, 2020
Tracy: A hybrid frame and sampling profiler for games and other applications
▲ 55 · 6 comments · January 28, 2023