Timer Code
This commit is contained in:
parent
ee658d6a6d
commit
ba20b719c6
125
PROMS/Volian.Base.Library/VolianTimer.cs
Normal file
125
PROMS/Volian.Base.Library/VolianTimer.cs
Normal file
@ -0,0 +1,125 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Volian.Base.Library
|
||||
{
|
||||
/// <summary>
|
||||
/// VolianTimer Class - Times from Open to Close
|
||||
/// Stores the results in a static list
|
||||
/// </summary>
|
||||
public class VolianTimer
|
||||
{
|
||||
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
static List<VolianTimer> _Timers = new List<VolianTimer>();
|
||||
/// <summary>
|
||||
/// User defined name - should be as specific as possible
|
||||
/// Include Method Name, File Name and Line Number
|
||||
/// </summary>
|
||||
private string _Name;
|
||||
public string Name
|
||||
{
|
||||
get { return _Name; }
|
||||
set { _Name = value; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Set on open
|
||||
/// </summary>
|
||||
private DateTime _Start;
|
||||
public DateTime Start
|
||||
{
|
||||
get { return _Start; }
|
||||
set { _Start = value; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Calculate on Close
|
||||
/// </summary>
|
||||
private long _Ticks;
|
||||
public long Ticks
|
||||
{
|
||||
get { return _Ticks; }
|
||||
set { _Ticks = value; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Number of times open/close has been run
|
||||
/// </summary>
|
||||
private int _Count;
|
||||
public int Count
|
||||
{
|
||||
get { return _Count; }
|
||||
set { _Count = value; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
public VolianTimer()
|
||||
{
|
||||
Count = 0;
|
||||
Ticks = 0;
|
||||
}
|
||||
/// <summary>
|
||||
/// Command Line Parameter /Timing turns timing on
|
||||
/// </summary>
|
||||
private static bool? _TimingsOn = null;
|
||||
public static bool TimingsOn
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_TimingsOn == null)
|
||||
_TimingsOn = Volian.Base.Library.VlnSettings.GetCommandFlag("Timing");
|
||||
return (bool) _TimingsOn;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructor with Module and line number
|
||||
/// </summary>
|
||||
/// <param name="module">Method Name, File Name</param>
|
||||
/// <param name="line">Code Line Number</param>
|
||||
public VolianTimer(string module, int line)
|
||||
{
|
||||
Count = 0;
|
||||
Ticks = 0;
|
||||
Name = string.Format("{0}:{1}", module, line);
|
||||
if(TimingsOn) _Timers.Add(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// Start Timer
|
||||
/// </summary>
|
||||
public void Open()
|
||||
{
|
||||
Start = DateTime.Now;
|
||||
Count++;
|
||||
}
|
||||
/// <summary>
|
||||
/// Stop Timer record statistics
|
||||
/// </summary>
|
||||
public void Close()
|
||||
{
|
||||
DateTime end = DateTime.Now;
|
||||
TimeSpan ts = TimeSpan.FromTicks(end.Ticks - Start.Ticks);
|
||||
Ticks += ts.Ticks;
|
||||
}
|
||||
/// <summary>
|
||||
/// Show the results in the error log
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static string ShowTimers()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (TimingsOn)
|
||||
{
|
||||
sb.AppendLine(
|
||||
"===============================================\r\n" +
|
||||
"Count\tSeconds\tEvent\r\n" +
|
||||
"----------------------------------------------- ");
|
||||
foreach (VolianTimer tmr in _Timers)
|
||||
sb.AppendLine(string.Format("{0}\t{1:N1}\t{2}", tmr.Count, TimeSpan.FromTicks(tmr.Ticks).TotalSeconds, tmr.Name));
|
||||
sb.AppendLine("===============================================\r\n");
|
||||
_MyLog.InfoFormat(sb.ToString());
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user