Stopwatch、Environment.TickCount、Win32 API函数QueryPerformanceCounter() 和 QueryPerformanceFrequency()对比

本文介绍C#三种性能分析计时器:Stopwatch、Environment.TickCount、Win32 API函数QueryPerformanceCounter() 和 QueryPerformanceFrequency()的性能与精度对比:

说明

private void Test1()
        {
            int a = 1 + 2;
        }

计算代表执行上面的Test1方法,主要是为了排除其他方面的影响,

不计算代表真实时间。

差距为计算和不计算的差值。

 

精度

            //延时1S精度测试5次平均值(去掉异常值)
            //Stopwatch:11ms
            //Environment.TickCount:15ms
            //QueryPerformanceCounter:12ms

性能

            //运行10000测试5次平均值(去掉异常值)
            //Stopwatch:1.1ms
            //Environment.TickCount:0.08ms
            //QueryPerformanceCounter:2.1ms

结论

            //Stopwatch:精度高、性能适中,推荐使用。
            //Environment.TickCount:性能最好,但精度低,误差15ms,适合超时判断等对精度要求不高的场合。
            //QueryPerformanceCounter:性能比Stopwatch差2倍多,精度和Stopwatch一致,不推荐。

           另外。从精度测试可以看出Thread.Sleep(1000)有10-15ms的误差。

stopwatch.ElapsedTicks是Stopwatch类的一个属性,用于获取从计时器开始到现在所经过的时钟周期数。时钟周期是计算机内部的一个时间单位,不同计算机的时钟周期长度可能会有所不同。 在给定的示例程序中,创建了一个Stopwatch对象,通过调用Start()方法启动计时器,然后调用Stop()方法停止计时器。最后,通过访问stopwatch.ElapsedTicks属性来获取计时器从开始到结束的时钟周期数。 请注意,ElapsedTicks属性返回的是一个长整型值,表示从计时器开始到结束的时钟周期数。如果需要将这个值转换为其他时间单位,可以使用Stopwatch类的其他属性,比如Elapsed,它返回一个TimeSpan对象,表示从开始到结束的时间间隔。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [高精度秒表StopWatch的使用方法及示例程序](https://blog.csdn.net/i78i845/article/details/129460302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [C#Stopwatch的简单计时](https://blog.csdn.net/weixin_30835923/article/details/96686790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值