diff options
Diffstat (limited to 'src/Ryujinx.Common/PerformanceCounter.cs')
-rw-r--r-- | src/Ryujinx.Common/PerformanceCounter.cs | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/Ryujinx.Common/PerformanceCounter.cs b/src/Ryujinx.Common/PerformanceCounter.cs new file mode 100644 index 00000000..97ee23a2 --- /dev/null +++ b/src/Ryujinx.Common/PerformanceCounter.cs @@ -0,0 +1,82 @@ +using System.Diagnostics; + +namespace Ryujinx.Common +{ + public static class PerformanceCounter + { + private static double _ticksToNs; + + /// <summary> + /// Represents the number of ticks in 1 day. + /// </summary> + public static long TicksPerDay { get; } + + /// <summary> + /// Represents the number of ticks in 1 hour. + /// </summary> + public static long TicksPerHour { get; } + + /// <summary> + /// Represents the number of ticks in 1 minute. + /// </summary> + public static long TicksPerMinute { get; } + + /// <summary> + /// Represents the number of ticks in 1 second. + /// </summary> + public static long TicksPerSecond { get; } + + /// <summary> + /// Represents the number of ticks in 1 millisecond. + /// </summary> + public static long TicksPerMillisecond { get; } + + /// <summary> + /// Gets the number of ticks elapsed since the system started. + /// </summary> + public static long ElapsedTicks + { + get + { + return Stopwatch.GetTimestamp(); + } + } + + /// <summary> + /// Gets the number of milliseconds elapsed since the system started. + /// </summary> + public static long ElapsedMilliseconds + { + get + { + long timestamp = Stopwatch.GetTimestamp(); + + return timestamp / TicksPerMillisecond; + } + } + + /// <summary> + /// Gets the number of nanoseconds elapsed since the system started. + /// </summary> + public static long ElapsedNanoseconds + { + get + { + long timestamp = Stopwatch.GetTimestamp(); + + return (long)(timestamp * _ticksToNs); + } + } + + static PerformanceCounter() + { + TicksPerMillisecond = Stopwatch.Frequency / 1000; + TicksPerSecond = Stopwatch.Frequency; + TicksPerMinute = TicksPerSecond * 60; + TicksPerHour = TicksPerMinute * 60; + TicksPerDay = TicksPerHour * 24; + + _ticksToNs = 1000000000.0 / Stopwatch.Frequency; + } + } +}
\ No newline at end of file |