Sum repeated stage names

This commit is contained in:
Jarrod Doyle 2024-08-29 19:27:18 +01:00
parent ec79e07ec7
commit 72f8666f5d
Signed by: Jayrude
GPG Key ID: 38B57B16E7C0ADF7
2 changed files with 29 additions and 2 deletions

View File

@ -74,7 +74,9 @@ public partial class Mission : Node3D
{ {
if (Build) if (Build)
{ {
Timing.Reset();
Timing.TimeStage("Build", () => RebuildMap()); Timing.TimeStage("Build", () => RebuildMap());
Timing.LogAll();
Build = false; Build = false;
} }
if (Clear) if (Clear)

View File

@ -1,16 +1,24 @@
using System; using System;
using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
namespace KeepersCompound.TMV; namespace KeepersCompound.TMV;
public static class Timing public static class Timing
{ {
static readonly Dictionary<string, TimeSpan> _stages = new();
public static void Reset()
{
_stages.Clear();
}
public static void TimeStage(string stagename, Action action) public static void TimeStage(string stagename, Action action)
{ {
var watch = Stopwatch.StartNew(); var watch = Stopwatch.StartNew();
action(); action();
watch.Stop(); watch.Stop();
Godot.GD.Print($"[{stagename}]: {watch.Elapsed:g}"); AddOrIncrement(stagename, watch.Elapsed);
} }
public static T TimeStage<T>(string stagename, Func<T> action) public static T TimeStage<T>(string stagename, Func<T> action)
@ -18,7 +26,24 @@ public static class Timing
var watch = Stopwatch.StartNew(); var watch = Stopwatch.StartNew();
var value = action(); var value = action();
watch.Stop(); watch.Stop();
Godot.GD.Print($"[{stagename}]: {watch.Elapsed:g}"); AddOrIncrement(stagename, watch.Elapsed);
return value; return value;
} }
public static void LogAll()
{
foreach (var (stagename, time) in _stages)
{
Godot.GD.Print($"[{stagename}]: {time:g}");
}
}
private static void AddOrIncrement(string stagename, TimeSpan elapsed)
{
if (_stages.TryGetValue(stagename, out var time))
{
elapsed += time;
}
_stages[stagename] = elapsed;
}
} }