mirror of
https://github.com/ICDSystems/ICD.Common.Utils.git
synced 2026-02-16 13:15:07 +00:00
feat: Profiling in ticks, Net Standard too fast...
This commit is contained in:
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user