Sum repeated stage names
This commit is contained in:
parent
ec79e07ec7
commit
72f8666f5d
|
@ -74,7 +74,9 @@ public partial class Mission : Node3D
|
|||
{
|
||||
if (Build)
|
||||
{
|
||||
Timing.Reset();
|
||||
Timing.TimeStage("Build", () => RebuildMap());
|
||||
Timing.LogAll();
|
||||
Build = false;
|
||||
}
|
||||
if (Clear)
|
||||
|
|
|
@ -1,16 +1,24 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace KeepersCompound.TMV;
|
||||
|
||||
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)
|
||||
{
|
||||
var watch = Stopwatch.StartNew();
|
||||
action();
|
||||
watch.Stop();
|
||||
Godot.GD.Print($"[{stagename}]: {watch.Elapsed:g}");
|
||||
AddOrIncrement(stagename, watch.Elapsed);
|
||||
}
|
||||
|
||||
public static T TimeStage<T>(string stagename, Func<T> action)
|
||||
|
@ -18,7 +26,24 @@ public static class Timing
|
|||
var watch = Stopwatch.StartNew();
|
||||
var value = action();
|
||||
watch.Stop();
|
||||
Godot.GD.Print($"[{stagename}]: {watch.Elapsed:g}");
|
||||
AddOrIncrement(stagename, watch.Elapsed);
|
||||
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;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue