feat: Profiling in ticks, Net Standard too fast...

This commit is contained in:
Chris Cameron
2018-07-30 09:54:36 -04:00
parent 425d651eba
commit 68caebb28b

View File

@@ -20,6 +20,8 @@ namespace ICD.Common.Utils.Timers
#region Properties #region Properties
public long ElapsedTicks { get { return m_Stopwatch.ElapsedTicks; } }
public long ElapsedMilliseconds { get { return m_Stopwatch.ElapsedMilliseconds; } } public long ElapsedMilliseconds { get { return m_Stopwatch.ElapsedMilliseconds; } }
public bool IsRunning { get { return m_Stopwatch.IsRunning; } } public bool IsRunning { get { return m_Stopwatch.IsRunning; } }
@@ -146,8 +148,8 @@ namespace ICD.Common.Utils.Timers
name = string.Format("{0} ({1} Iterations)", name, iterations); name = string.Format("{0} ({1} Iterations)", name, iterations);
long totalTime = 0; long totalTicks = 0;
List<long> times = new List<long>(iterations); List<long> orderedMs = new List<long>(iterations);
for (int index = 0; index < iterations; index++) for (int index = 0; index < iterations; index++)
{ {
@@ -155,25 +157,26 @@ namespace ICD.Common.Utils.Timers
{ {
action(); action();
} }
long duration = stopwatch.ElapsedMilliseconds; long duration = stopwatch.ElapsedTicks;
stopwatch.Stop(); stopwatch.Stop();
times.AddSorted(duration); orderedMs.AddSorted(duration);
totalTime += duration; totalTicks += duration;
} }
long averageTime = totalTime / iterations; long totalMs = totalTicks / TimeSpan.TicksPerMillisecond;
long medianTime = times[iterations / 2]; long averageMs = (totalTicks / iterations) / TimeSpan.TicksPerMillisecond;
long shortestTime = times[0]; long medianMs = (orderedMs[iterations / 2]) / TimeSpan.TicksPerMillisecond;
long longestTime = times[iterations - 1]; long shortestMs = orderedMs[0] / TimeSpan.TicksPerMillisecond;
long longestMs = orderedMs[iterations - 1] / TimeSpan.TicksPerMillisecond;
TableBuilder builder = new TableBuilder(name, "Duration (ms)"); TableBuilder builder = new TableBuilder(name, "Duration (ms)");
builder.AddRow("Total", totalTime.ToString("n0")); builder.AddRow("Total", totalMs.ToString("n0"));
builder.AddRow("Average", averageTime.ToString("n0")); builder.AddRow("Average", averageMs.ToString("n0"));
builder.AddRow("Median", medianTime.ToString("n0")); builder.AddRow("Median", medianMs.ToString("n0"));
builder.AddRow("Shortest", shortestTime.ToString("n0")); builder.AddRow("Shortest", shortestMs.ToString("n0"));
builder.AddRow("Longest", longestTime.ToString("n0")); builder.AddRow("Longest", longestMs.ToString("n0"));
IcdConsole.PrintLine(builder.ToString()); IcdConsole.PrintLine(builder.ToString());
} }