-
Notifications
You must be signed in to change notification settings - Fork 69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Profiling/Tracing library for riker #134
Comments
@hardliner66 |
@olexiyb Valgrind is linux only. And an integrated profiling/tracing library can provide addtional information on top of a call-graph. |
@hardliner66 I'll take a look at your suggestions and provide feedback - I've been unavailable for the past couple of weeks - hopefully this week. Thanks! |
After doing some basic performance testing with hyperfine, I wanted to get a deeper understanding of the performance characteristics of riker.
So I integrated two tracing/profiling libraries. optick-rs and tracing.
I prepared three branches, but wanted to get community feedback before I create a pull request.
Optick
Riker + Optick
Optick is a profiler written for games, which just got it's rust bindings a few months ago.
After annotating all functions with the proc-macro for optick (you can create spans manually if you like), you only need to specify where the logs should go and optick creates a file with all the profiling data inside, which can than be inspected with the Optick profiler gui.
Pros:
Cons:
Tracing
Riker + Tracing
Tracing on the other hand, is an instrumentation framework for which it's possible to write a custom
Subscriber
, in order to use whatever profiler you want.Pros:
Cons:
Both
Riker + Tracing + Optick
Adds both to riker, with optick as the default.
Pros:
Cons:
Final thoughts
I currently am in favor of the last variant, wich includes the tracing library and a specific profiling library. This way all contributors would have a standard profiler to use, but everyone can plug their own profilere if the profiler we chose doesn't fit their needs.
I picked Optick as the default profiler because it was easy to integrate, provides a nice gui und is built for use in games (or similar applications where performance matters), but I'm open for other profilers to use as a default.
The text was updated successfully, but these errors were encountered: