Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Использовать или не использовать класс Stopwatch решать Вам. Однако как мне кажется преимуществ у данного класса, все же больше чем недостатков.
using (new StopwatchOperation("TODO: Ваше имя тут"))
{
// Мой код тут
}
public class StopwatchOperation: IDisposable
{
public string Name { get; set; }
protected Stopwatch InnerStopwatch { get; set; }
public StopwatchOperation(string name)
{
this.InnerStopwatch = new Stopwatch();
this.Name = name;
this.InnerStopwatch.Start();
}
#region IDisposable Members
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
if(this.InnerStopwatch!=null)
{
this.InnerStopwatch.Stop();
Trace.WriteLine(string.Format("Duration of '{0}' is {1} milliseconds.", this.Name, this.InnerStopwatch.ElapsedMilliseconds));
this.InnerStopwatch = null;
}
}
}
#endregion
}
public static class StopwatchExtension
{
public static TimeSpan GetElapsedTime(this Action action)
{
var sw = Stopwatch.StartNew();
action();
sw.Stop();
return sw.Elapsed;
}
}var elapsed = StopwatchExtension.GetElapsedTime(() =>
{
for (int i = 0; i < 1000; i++)
{
Debug.WriteLine(i);
}
});
Console.WriteLine(elapsed);Action action = () =>
{
for (int i = 0; i < 1000; i++)
{
Debug.WriteLine(i);
}
};
var elapsed = action.GetElapsedTime();
Console.WriteLine(elapsed);
Под капотом у Stopwatch