Changed logging in DoTimed/RunActivity to create less overhead.

- Refactored PerfTimer to use less memory.
- Avoid using the PerfTimer in highly called methods DoTimed and RunActivity, instead tracking long ticks manually to reduce overhead and avoid memory allocations.
- Added some helper methods in PerfTimer to output information when a tick takes too long.
- Changed PerfTimer logging to output the time at the start of the line, and no longer truncate output per line.
- Settings.LongTickThreshold changed from TimeSpan to float and renamed to LongTickThresholdMs.
This commit is contained in:
RoosterDragon
2014-05-23 06:01:46 +01:00
parent 446884fec2
commit d1b3d77662
5 changed files with 73 additions and 60 deletions

View File

@@ -244,9 +244,9 @@ namespace OpenRA
foreach (var a in actors)
a.Tick();
ActorsWithTrait<ITick>().DoTimed(x => x.Trait.Tick(x.Actor), "Trait", Game.Settings.Debug.LongTickThreshold);
ActorsWithTrait<ITick>().DoTimed(x => x.Trait.Tick(x.Actor), "Trait");
effects.DoTimed(e => e.Tick(this), "Effect", Game.Settings.Debug.LongTickThreshold);
effects.DoTimed(e => e.Tick(this), "Effect");
}
while (frameEndActions.Count != 0)