tracy | optick | |
---|---|---|
68 | 8 | |
11,314 | 3,006 | |
4.1% | 0.7% | |
9.7 | 0.0 | |
11 days ago | 11 months ago | |
C++ | C# | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
tracy
-
Show HN: Single-Header Profiler for C++17
Haven't worked with it, but based on initial look it's a quite different thing that stands closer to a frame-based profiler like Tracy (https://github.com/wolfpld/tracy).
As far as differences go:
Microprofile:
-
Rust: Doubling Throughput with Continuous Profiling and Optimization
I'm not sure if this is what you are looking for but I found https://github.com/wolfpld/tracy to work rather well. There is an integration for the tracing crate that can get you very far: https://lib.rs/crates/tracing-tracy. If you're just looking for a very high level report then this might be a bit too much detail.
-
Clay – UI Layout Library
> First, this isn't really true. You might typically have a window, a container, a layout object and then your gui components.
Any non-trivial UI will include many complicated workflows and layouts. "GUI components" themselves will often be combinations of other, more primitive, GUI components.
> Second you don't need nested calls, you just add one component to another.
You're just describing currying here (function application or nesting hierarchies are the same thing), and both are equally annoying when building interfaces.
> Why would that be true?
Because you will want certain things to be reusable, it's a pretty common pattern.
> This is a bizarre way to make a GUI let alone thinking it's necessary. Where is this idea coming from?
It's a pretty common pattern for building GUIs. Take a look at tracy[1], built using ImGUI. All the different components are split up in their own file, I'm not sure what the alternative would be, like a 100,000-line "master UI" file? Seems like a much worse idea. Looking at the tracy code, it's very well-written, but also super weird to follow. For example, color defaults seem to be located in header files[2]. I mean, yuck.
[1] https://github.com/wolfpld/tracy/tree/master/profiler/src/pr...
[2] https://github.com/wolfpld/tracy/blob/master/profiler/src/pr...
-
Intentrace: Strace for Everyone
While it doesn't capture every syscall, you can get pretty far with the (seemingly little known) Endpoint Security Framework: https://developer.apple.com/documentation/endpointsecurity
I cobbled together a little tool at my previous job that would capture a full trace of all process fork+exec and file opens, which would then present all of these events in the usual tracing UI (like you'd get when view a trace of a single program with Tracy[1] or Perfetto[2]).
We had a massive monorepo built with bazel and a heap of shell, and it wasn't clear which part of our code base was responsible for generating some mis-generated file. This tool gave me the whole inter-process call stack, complete with arguments and environment variables, letting me quickly find where and how to fix the problem.
It's such a nice tool to have that it kinda blows my mind that no one has openly published anything like it. By leveraging eBPF on Linux, the same UI could be used on both macOS and Linux. If I had more time and energy, I'd do it myself.
[1]: https://github.com/wolfpld/tracy
[2]: https://perfetto.dev/
-
Tracy: A real time, nanosecond resolution frame profiler
https://github.com/wolfpld/tracy/issues/887
MSVC changed the mutex constructor to constexpr, breaking binary backward compatibility. They say WONTFIX, you must use the latest MSVCRT with the latest MSVC. But I have the latest MSVCRT installed? Whatever - a workaround was pushed to master yesterday.
-
Logging all C++ destructors, poor mans run-time tracing
I consider Tracy the state of the art for profiling C++ applications. It’s straightforward to integrate, toggle, gather data, analyze, and respond. It’s also open source, but rivals any product you’d have to pay for:
https://github.com/wolfpld/tracy
- Trace Profiler 0.11.1
-
Flame Graphs: Making the Opaque Obvious (2017)
For C++ applications, nothing beats Tracy’s flame graphs in value per dollar. We are using it at Adobe with great effect. It can handle mutex lock contention, runtime values and notes, arbitrary value graphs, and more. Highly recommended: https://github.com/wolfpld/tracy
- Tracy: A real time frame and sampling profiler for games and other applications
- Tracy: Real-time nanosecond resolution frame profiler
optick
- Optick: C++ Profiler for Games
-
What is your favourite profiling tool for C++?
Does anyone here have experience with Optick: https://github.com/bombomby/optick ? It looks great but I haven't got the chance to try it. Was wondering how it compares to the other tools listed here.
-
What profiling tools you really want to recommend to others?
As a free alternative, I've had multiple people recommend Optick, but I haven't had the chance to play around with it yet, so I can't vouch for it myself.
-
Tracy: A hybrid frame and sampling profiler for games and other applications
I have used Tracy to improve the performance of a latency sensitive application. The main advantage of this tool, in comparison to something like the Visual Studio profiler, is the fact that it can highlight the inter thread dependencies and synchronization between the threads. The other main feature, in my opinion, is the statistical tab that is associated to the recorded events: it can show the statistical distribution of the duration of all the invocations of functions and it allows to identify patterns in the performance of the application. Furthermore, a table can be used to sort the invocations of the functions and quickly jump to the point in time when the sample was recorded.
Other notable tools that implement a functionality similar to what is provided by Tracy are Optick https://github.com/bombomby/optick and Intel VTune (sadly specific to only Intel processors) in the Threading analysis.
-
What are the best resources to learn networking for low latency C++ engineers?
we don't do systematic perf measurements beyond prod metrics but if we did the good tools are uiCA/IACA/etc, tracy/brofiler, perf/vtune
-
Should I make my own game engine?
I highly recommend checking out Optick. I use it almost daily at work :)
- What tracing library do you use that works cross platform?
What are some alternatives?
orbit - C/C++ Performance Profiler
Rin - Request/response Inspector middleware for ASP.NET Core
palanteer - Visual Python and C++ nanosecond profiler, logger, tests enabler
STL - MSVC's implementation of the C++ Standard Library.
Glimpse - The open source diagnostics platform for the web