Timing: Rename ElapsedTicks to ElapsedMilliseconds and expose TicksPerX

This commit is contained in:
jduncanator 2018-10-25 10:10:37 +11:00
parent 7403db2f69
commit 646a3c57c7
6 changed files with 56 additions and 19 deletions

View file

@ -138,7 +138,7 @@ namespace ChocolArm64
CacheBucket Bucket = Cache[Node.Value];
long TimeDelta = RingDelta(Bucket.Timestamp, Timestamp);
long TimeDelta = Bucket.Timestamp - Timestamp;
if (TimeDelta <= MinTimeDelta)
{
@ -159,12 +159,7 @@ namespace ChocolArm64
{
long timestamp = Stopwatch.GetTimestamp();
return (long)(timestamp * (1000.0f / Stopwatch.Frequency));
}
private static long RingDelta(long Old, long New)
{
return New - Old;
return timestamp / (Stopwatch.Frequency / 1000);
}
}
}

View file

@ -4,6 +4,40 @@ namespace Ryujinx.Common
{
public static class PerformanceCounter
{
static PerformanceCounter()
{
TicksPerMillisecond = Stopwatch.Frequency / 1000;
TicksPerSecond = Stopwatch.Frequency;
TicksPerMinute = TicksPerSecond * 60;
TicksPerHour = TicksPerMinute * 60;
TicksPerDay = TicksPerHour * 24;
}
/// <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>
@ -13,7 +47,20 @@ namespace Ryujinx.Common
{
long timestamp = Stopwatch.GetTimestamp();
return (long)(timestamp * (1000.0f / Stopwatch.Frequency));
return timestamp;
}
}
/// <summary>
/// Gets the number of milliseconds elapsed since the system started.
/// </summary>
public static long ElapsedMilliseconds
{
get
{
long timestamp = Stopwatch.GetTimestamp();
return timestamp / TicksPerMillisecond;
}
}
}

View file

@ -27,7 +27,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
this.DataSize = DataSize;
this.Node = Node;
Timestamp = PerformanceCounter.ElapsedTicks;
Timestamp = PerformanceCounter.ElapsedMilliseconds;
}
}
@ -142,7 +142,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
private void ClearCacheIfNeeded()
{
long Timestamp = PerformanceCounter.ElapsedTicks;
long Timestamp = PerformanceCounter.ElapsedMilliseconds;
int Count = 0;
@ -157,7 +157,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
CacheBucket Bucket = Cache[Node.Value];
long TimeDelta = RingDelta(Bucket.Timestamp, Timestamp);
long TimeDelta = Bucket.Timestamp - Timestamp;
if ((uint)TimeDelta <= (uint)MaxTimeDelta)
{
@ -171,10 +171,5 @@ namespace Ryujinx.Graphics.Gal.OpenGL
DeleteValueCallback(Bucket.Value);
}
}
private long RingDelta(long Old, long New)
{
return New - Old;
}
}
}

View file

@ -851,7 +851,7 @@ namespace Ryujinx.Graphics
//TODO: Implement counters.
long Counter = 1;
long Timestamp = PerformanceCounter.ElapsedTicks;
long Timestamp = PerformanceCounter.ElapsedMilliseconds;
Timestamp = (long)(Timestamp * 615384.615385);

View file

@ -26,7 +26,7 @@ namespace Ryujinx.HLE.HOS.Kernel
if (Thread != null)
{
Thread.LastScheduledTicks = PerformanceCounter.ElapsedTicks;
Thread.LastScheduledTicks = PerformanceCounter.ElapsedMilliseconds;
}
if (SelectedThread != CurrentThread)

View file

@ -216,7 +216,7 @@ namespace Ryujinx.HLE.Input
private static long GetTimestamp()
{
return PerformanceCounter.ElapsedTicks * 19200;
return PerformanceCounter.ElapsedMilliseconds * 19200;
}
}
}