Announcing Tharsis.prof, a frame-based profiler in D.

A profiler as-a-library that keeps track of overhead of every individual frame RAII-style API for recording profile data, and range-style API for processing the results (with std.algorithm and the like - no graphics interface yet). No GC allocations (and no heap allocations either - user must provide memory).

See example at:

https://github.com/kiith-sa/tharsis.prof


Use case: my game has a rare lag that occurs once per minute. Profiler is useless because the lag is averaged out. To solve with Tharsis.prof:

* Instrument code (add Zones, say, for rendering batches, physics, etc)
* Profile till the lag occurs.
* Get a range of frames (e.g. by filtering zones to get those named "frame")
* Sort the range
* Get the longest frame
* Filter a range of all zones to get only those with start/end time within the longest frame.
* Find the offending zone
* Done


Blog posts explaining what this is in detail (should be one post, but it ended up being too long):

http://defenestrate.eu/2014/09/05/frame_based_game_profiling.html
http://defenestrate.eu/2014/09/05/optimizing_memory_usage_of_a_frame_based_profiler.html
http://defenestrate.eu/2014/09/05/frame_based_profiling_with_d_ranges.html

GitHub: https://github.com/kiith-sa/tharsis.prof
Dub: http://code.dlang.org/packages/tharsis-prof
API docs (with examples): http://defenestrate.eu/docs/tharsis.prof/index.html

Reply via email to