-
Notifications
You must be signed in to change notification settings - Fork 0
/
PerformanceTimerEx.cs
75 lines (64 loc) · 2.18 KB
/
PerformanceTimerEx.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
namespace RB3DOverlayed
{
using System;
using System.Diagnostics;
using Clio.Utilities;
using ff14bot.Helpers;
/// <summary>A performance timer.</summary>
public class PerformanceTimerEx : IDisposable
{
private readonly Stopwatch _timer;
private readonly string _debugText;
private bool _dontPrint;
private readonly int _logmsLimit;
/// <summary>Initializes a new instance of the <see cref="PerformanceTimer"/> class.</summary>
/// <remarks>Created 2012-04-03.</remarks>
/// <param name="debugText"> The debug text.</param>
/// <param name="logMsLimit">(Optional) the log milliseconds limit.</param>
public PerformanceTimerEx(string debugText, int logMsLimit = 0)
{
_timer = new Stopwatch();
_debugText = debugText;
_logmsLimit = logMsLimit;
AutoStart();
}
/// <summary>Starts the timer.</summary>
/// <remarks>Created 2012-04-03.</remarks>
public void Start()
{
_timer.Start();
}
private void AutoStart()
{
Start();
}
private void AutoStop()
{
StopAndPrint();
}
/// <summary>Dont print.</summary>
public void DontPrint()
{
_dontPrint = true;
}
/// <summary>Gets the elapsed milliseconds.</summary>
/// <value>The elapsed milliseconds.</value>
public long ElapsedMilliseconds { get { return _timer.ElapsedMilliseconds; } }
/// <summary>Stops the timers and prints the time.</summary>
/// <remarks>Created 2012-04-03.</remarks>
public void StopAndPrint()
{
_timer.Stop();
if (_dontPrint)
return;
if (ElapsedMilliseconds > _logmsLimit)
Logging.WriteDiagnostic("[{0}ms] {1}", _timer.Elapsed.TotalMilliseconds, _debugText);
}
/// <summary>Performs application-defined tasks associated with freeing, releasing, or resetting
/// unmanaged resources.</summary>
public void Dispose()
{
AutoStop();
}
}
}