Better perf logging

This commit is contained in:
Paul Chote
2010-09-17 10:02:24 +12:00
parent b94c2fc7c4
commit a3246866fb
3 changed files with 12 additions and 7 deletions

View File

@@ -15,7 +15,8 @@ using System.Linq;
using OpenRA.FileFormats; using OpenRA.FileFormats;
using OpenRA.GameRules; using OpenRA.GameRules;
using OpenRA.Traits; using OpenRA.Traits;
using OpenRA.Traits.Activities; using OpenRA.Traits.Activities;
using OpenRA.Support;
namespace OpenRA namespace OpenRA
{ {
@@ -74,8 +75,13 @@ namespace OpenRA
while (currentActivity != null) while (currentActivity != null)
{ {
var a = currentActivity; var a = currentActivity;
var sw = new Stopwatch();
currentActivity = a.Tick(this) ?? new Idle(); currentActivity = a.Tick(this) ?? new Idle();
var dt = sw.ElapsedTime();
if( dt > 0.001 )
Log.Write("perf", "[{2}] Activity: {0} ({1:0.000} ms)", a, dt * 1000, Game.LocalTick);
if (a == currentActivity) break; if (a == currentActivity) break;
if (currentActivity is Idle) if (currentActivity is Idle)

View File

@@ -64,7 +64,7 @@ namespace OpenRA
a( x ); a( x );
var dt = sw.ElapsedTime() - t; var dt = sw.ElapsedTime() - t;
if( dt > time ) if( dt > time )
Log.Write("perf", text, x, dt * 1000); Log.Write("perf", text, x, dt * 1000, Game.LocalTick);
} ); } );
} }
} }

View File

@@ -146,14 +146,13 @@ namespace OpenRA
if (DisableTick) if (DisableTick)
return; return;
actors.DoTimed( x => x.Tick(), "expensive actor tick: {0} ({1:0.000} ms)", 0.001 ); actors.Do( x => x.Tick() );
Queries.WithTraitMultiple<ITick>().DoTimed( x => Queries.WithTraitMultiple<ITick>().DoTimed( x =>
{ {
x.Trait.Tick( x.Actor ); x.Trait.Tick( x.Actor );
}, "expensive trait tick: {0} ({1:0.000} ms)", 0.001 ); }, "[{2}] Trait: {0} ({1:0.000} ms)", 0.001 );
effects.DoTimed( e => e.Tick( this ), "expensive effect tick: {0} ({1:0.000} ms)", 0.001 ); effects.DoTimed( e => e.Tick( this ), "[{2}] Effect: {0} ({1:0.000} ms)", 0.001 );
Game.viewport.Tick(); Game.viewport.Tick();
while (frameEndActions.Count != 0) while (frameEndActions.Count != 0)
frameEndActions.Dequeue()(this); frameEndActions.Dequeue()(this);