Stopwatch
Object
–> Stopwatch
Example
Stopwatch sw = new Stopwatch();
sw.Start();
// …
sw.Stop();
TimeSpan ts = sw.Elapsed;
// Calling sw.Start() again here resumes the stopwatch at the elapsed time it was stopped
Methods
StartNew()
— Start a new stopwatch timer
Reset()
— Reset a timer
Restart()
— Reset a timer and start it
Properties
Elapsed
ElapsedMilliseconds
ElapsedTicks
— Ticks elapsed since stopwatch started/stopped
Frequency
— Ticks per second
- Note: (1000L * 1000L * 1000L) / frequency = nanoseconds per tick
IsHighResolution
— If true, using system’s high-resolution performance counter. Else, DateTime class.IsRunning
— Boolean if stopwatch is running
A Recorder Class to Monitor Performance
using System.Diagnostics;
public static class Recorder
{
private static Stopwatch timer = new();
private static long bytesPhysicalBefore = 0;
private static long bytesVirtualBefore = 0;
public static void Start()
{
// Store the current physical and virtual memory use:
bytesPhysicalBefore = Process.GetCurrentProcess().WorkingSet64;
bytesVirtualBefore = Process.GetCurrentProcess().VirtualMemorySize64;
timer.Restart();
}
public static void Stop()
{
timer.Stop();
long bytesPhysicalAfter = GetCurrentProcess().WorkingSet64;
long bytesVirtualAfter = GetCurrentProcess().VirtualMemorySize64;
Console.WriteLine($"{bytesPhysicalAfter - bytesPhysicalBefore}");
Console.WriteLine($"{bytesVirtualAfter - bytesVirtualBefore}");
Console.WriteLine($"{timer.Elapsed} elapsed.");
Console.WriteLine($"{timer.ElapsedMilliseconds} ms elapsed.");
}
}