mirror of
https://bitbucket.org/Mattrixwv/csclasses.git
synced 2025-12-06 18:23:58 -05:00
Updated to be more reliable if tick freq changes
This commit is contained in:
@@ -25,6 +25,7 @@ namespace mee{
|
|||||||
private System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); //The stopwatch that is used
|
private System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); //The stopwatch that is used
|
||||||
private enum TIME_RESOLUTION{ NANOSECOND, MICROSECOND, MILLISECOND, SECOND, MINUTE, HOUR, ERROR };
|
private enum TIME_RESOLUTION{ NANOSECOND, MICROSECOND, MILLISECOND, SECOND, MINUTE, HOUR, ERROR };
|
||||||
private const int NUM_TO_RUN = 100000;
|
private const int NUM_TO_RUN = 100000;
|
||||||
|
private readonly long nanosecPerTick = 1000000000L / System.Diagnostics.Stopwatch.Frequency;
|
||||||
//Functions
|
//Functions
|
||||||
//Constructor makes sure all values are set to defaults
|
//Constructor makes sure all values are set to defaults
|
||||||
public Stopwatch(){
|
public Stopwatch(){
|
||||||
@@ -47,28 +48,27 @@ namespace mee{
|
|||||||
}
|
}
|
||||||
//Returns the timer in nanoseconds
|
//Returns the timer in nanoseconds
|
||||||
public decimal getNano(){
|
public decimal getNano(){
|
||||||
//Each tick = 100 nanoseconds
|
return (decimal)nanosecPerTick * (decimal)stopwatch.ElapsedTicks;
|
||||||
return (decimal)stopwatch.ElapsedTicks * 100m;
|
|
||||||
}
|
}
|
||||||
//Returns the timer in microseconds
|
//Returns the timer in microseconds
|
||||||
public decimal getMicro(){
|
public decimal getMicro(){
|
||||||
return (decimal)stopwatch.ElapsedTicks / 10m;
|
return getNano() / 1000m;
|
||||||
}
|
}
|
||||||
//Returns the timer in milliseconds
|
//Returns the timer in milliseconds
|
||||||
public decimal getMilli(){
|
public decimal getMilli(){
|
||||||
return (decimal)stopwatch.ElapsedTicks / 10000m;
|
return getNano() / 1000000m;
|
||||||
}
|
}
|
||||||
//Returns the timer in seconds
|
//Returns the timer in seconds
|
||||||
public decimal getSecond(){
|
public decimal getSecond(){
|
||||||
return (decimal)stopwatch.ElapsedTicks / 10000000m;
|
return getNano() / 1000000000m;
|
||||||
}
|
}
|
||||||
//Returns the timer in minutes
|
//Returns the timer in minutes
|
||||||
public decimal getMinute(){
|
public decimal getMinute(){
|
||||||
return (decimal)stopwatch.ElapsedTicks / 600000000m;
|
return getNano() / 60000000000m;
|
||||||
}
|
}
|
||||||
//Returns the timer in hours
|
//Returns the timer in hours
|
||||||
public decimal getHour(){
|
public decimal getHour(){
|
||||||
return (decimal)stopwatch.ElapsedTicks / 36000000000m;
|
return getNano() / 3600000000000m;
|
||||||
}
|
}
|
||||||
//Returns the timer as a string at the 'best' resolution. (Goal is xxx.xxx)
|
//Returns the timer as a string at the 'best' resolution. (Goal is xxx.xxx)
|
||||||
public string getStr(){
|
public string getStr(){
|
||||||
@@ -80,7 +80,7 @@ namespace mee{
|
|||||||
decimal duration = nanoseconds;
|
decimal duration = nanoseconds;
|
||||||
//Reduce the number to the appropriate number of digits. (xxx.x)
|
//Reduce the number to the appropriate number of digits. (xxx.x)
|
||||||
//This loop works down to seconds
|
//This loop works down to seconds
|
||||||
TIME_RESOLUTION resolution = new TIME_RESOLUTION();
|
TIME_RESOLUTION resolution;
|
||||||
for(resolution = TIME_RESOLUTION.NANOSECOND;(resolution < TIME_RESOLUTION.SECOND) && (duration >= 1000);++resolution){
|
for(resolution = TIME_RESOLUTION.NANOSECOND;(resolution < TIME_RESOLUTION.SECOND) && (duration >= 1000);++resolution){
|
||||||
duration /= 1000;
|
duration /= 1000;
|
||||||
}
|
}
|
||||||
@@ -99,7 +99,6 @@ namespace mee{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Turn the number into a string
|
//Turn the number into a string
|
||||||
//string time = string.Format("{0C3}", duration);
|
|
||||||
string time = duration.ToString("C3").Substring(1);
|
string time = duration.ToString("C3").Substring(1);
|
||||||
|
|
||||||
//Tack on the appropriate suffix for resolution
|
//Tack on the appropriate suffix for resolution
|
||||||
|
|||||||
Reference in New Issue
Block a user