www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Tharsis.prof 0.1: a frame-based profiler for game development

reply "Kiith-Sa" <kiithsacmp gmail.com> writes:
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
Sep 05 2014
next sibling parent "Jonas Drewsen" <nospam4321 hotmail.com > writes:
On Friday, 5 September 2014 at 11:06:56 UTC, Kiith-Sa wrote:
 Announcing Tharsis.prof, a frame-based profiler in D.
Awesome. Looking forward to check it out! /Jonas
Sep 05 2014
prev sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
This looks like solid work, congratulations! Could someone please 
announce this on reddit and hackernews on Monday morning?

We'd need one of the blog posts to be the entry point leading to the 
others and to the code examples. Which one would be it?


Andrei

On 9/5/14, 4:06 AM, Kiith-Sa wrote:
 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
Sep 06 2014
parent "Kiith-Sa" <kiithsacmp gmail.com> writes:
On Sunday, 7 September 2014 at 02:41:53 UTC, Andrei Alexandrescu 
wrote:
 This looks like solid work, congratulations! Could someone 
 please announce this on reddit and hackernews on Monday morning?

 We'd need one of the blog posts to be the entry point leading 
 to the others and to the code examples. Which one would be it?


 Andrei

 On 9/5/14, 4:06 AM, Kiith-Sa wrote:
 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
Actually, it's already on Reddit, but on r/gamedev: http://www.reddit.com/r/gamedev/comments/2fjgcu/framebased_game_profiling/ The first post contains easily visible links to the other two, but it's not particularly D-focused (neither is the second). The third post is D-focused, and it contains links to the previous two, some code examples as well as a link to the GitHub project with the introductory example, but these links are inline in the text, not separate.
Sep 06 2014