Tharsis.prof 0.1: a frame-based profiler for game development
Kiith-Sa via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Fri Sep 5 04:06:55 PDT 2014
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
More information about the Digitalmars-d-announce
mailing list