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