mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-08-19 07:08:43 +02:00
* Timing: Optimize Timestamp Aquisition Currently, we make use of Environment.TickCount in a number of places. This has some downsides, mainly being that the TickCount is a signed 32-bit integer, and has an effective limit of ~25 days before overflowing and wrapping around. Due to the signed-ness of the value, this also caused issues with negative numbers. This resolves these issues by using a 64-bit tick count obtained from Performance Counters (via the Stopwatch class). This has a beneficial side effect of being significantly more accurate than the TickCount. * Timing: Rename ElapsedTicks to ElapsedMilliseconds and expose TicksPerX * Timing: Some style changes * Timing: Align static variable initialization
66 lines
1.8 KiB
C#
66 lines
1.8 KiB
C#
using System.Diagnostics;
|
|
|
|
namespace Ryujinx.Common
|
|
{
|
|
public static class PerformanceCounter
|
|
{
|
|
/// <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 milliseconds 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;
|
|
}
|
|
}
|
|
|
|
static PerformanceCounter()
|
|
{
|
|
TicksPerMillisecond = Stopwatch.Frequency / 1000;
|
|
TicksPerSecond = Stopwatch.Frequency;
|
|
TicksPerMinute = TicksPerSecond * 60;
|
|
TicksPerHour = TicksPerMinute * 60;
|
|
TicksPerDay = TicksPerHour * 24;
|
|
}
|
|
}
|
|
}
|