C# 高精度计时器Stopwatch
C# 高精度计时器Stopwatch
引言
偶然发现C# 的计时器类Stopwatch,他特别适合测量运行时间,使用简单、计时精确。它源于命名空间System.Diagnostics,使用时必须using引用。
经典举例
下面用一秒延时的实例来创建一个最简单的实例。
(1)启动和停止方法实例
//按键单击
private void button_watch_Click(object sender, EventArgs e)
{
Console.WriteLine("action_spent_time:" + watch(action));
}
//模拟用户函数耗时
private void action()
{
Thread.Sleep(1000);
}
//开始和停止定时器
public static double watch(Action action)
{
//实例化
Stopwatch stopWatch = new Stopwatch();
//启动定时器
stopWatch.Start();
//用户任务
action();
//停止定时器
stopWatch.Stop();
//返回计时器时间
return stopWatch.Elapsed.TotalMilliseconds;
}
打印显示
action_spent_time:1014.7956
(2)复位和重启方法实例
//按键单击
private void button_watch_Click(object sender, EventArgs e)
{
watchResetAndRestart(action);
}
//模拟用户函数耗时
private void action()
{
Thread.Sleep(1000);
}
//复位和重启计时器时器
public void watchResetAndRestart(Action action)
{
//实例化
Stopwatch stopWatch = new Stopwatch();
//启动定时器
stopWatch.Start();
//用户任务
action();
Console.WriteLine("action:"+ stopWatch.Elapsed.TotalMilliseconds);
//复位定时器
stopWatch.Reset();
Console.WriteLine("action reset:" + stopWatch.Elapsed.TotalMilliseconds);
//重启定时器
stopWatch.Restart();
//用户任务
action();
Console.WriteLine("action Restart:" + stopWatch.Elapsed.TotalMilliseconds);
//复位定时器
stopWatch.Reset();
}
}
打印显示:
action:1000.8485
action reset:0
action Restart:1009.2571
小结
是不是觉得很简单。小伙伴们可以用起来。
1、实例中可以看到精度可以得到0.1微秒使用double类型,我认为算精度很高的吧,不需要这么高精度可以做运算舍去,或者使用其它的更低精度的属性,如stopWatch.ElapsedMilliseconds等。
2、复位reset()和停止Stop()的功能都停止了计时器,但是reset,将时间复位为0了,这里注意一下就好。
原文地址:https://blog.csdn.net/weixin_45023644/article/details/143531060
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!