少有人走的路

勇哥的工业自动化技术网站

计算代码执行时间,可以精确到十亿分之一秒

勇哥注:

.Net的Stopwatch类可以精确到1/10000毫秒, 有没有更精确的计时吗?

见下面的代码。暂时没试过效果,大家可以试下。


计算某个代码片段的执行时间,精确到CPU执行一条指令所用的时间(十亿分之一秒),可用于精确计算某个算法的执行时间。


代码:

using System;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Threading;

/// <summary>
/// 作用:计算执行时间
/// 说明:需依赖 Kernel32.dll
/// </summary>
    public class PreciseTimer {
        [DllImport("Kernel32.dll")]
        private static extern bool QueryPerformanceCounter (out long lpPerformanceCount);
        [DllImport("Kernel32.dll")]
        private static extern bool QueryPerformanceFrequency(out long lpPerformanceFrequency);

        private long startTime;//开始时间
        private long stopTime;//终止时间
        private long requency;//频率

        /// <summary>
        /// 构造方法
        /// </summary>
        public PreciseTimer () {
            if (QueryPerformanceFrequency(out requency) == false) {
                throw new Win32Exception();
            }
        }

        /// <summary>
        /// 开始计时
        /// </summary>
        public void Start () {
            startTime = 0;
            stopTime = 0;
            Thread.Sleep(0);
            QueryPerformanceCounter(out startTime);
        }

        /// <summary>
        /// 停止计时
        /// </summary>
        public void Stop () {
            QueryPerformanceCounter(out stopTime);
        }

        /// <summary>
        /// 历时时长单位毫秒
        /// </summary>
        public double Duration {
            get {
                return (double)(stopTime - startTime) * 1000 / (double)requency;
            }
        }
    }


1、说明:

此类需依赖 Kernel32.dll 文件(window 自带),其中包含下列方法及属性

 属性:public double Duration  //记录时长单位毫秒

 构造方法:public PreciseTimer ()

 开始计时:public void Start ()

 停止计时:public void Stop ()

 

2、使用方法:

将 PreciseTimer.cs 加入项目中

在要计时的代码段中依次调用 Start()、Stop()方法,使用 Duration 属性获取时长。


3、例:

PreciseTimer myTimer = new PreciseTimer();
myTimer.Start();
/*要计算执行时间的代码片*/
myTimer.Stop();
double times = myTimer.Duration;


勇哥的另一篇文章有更进一步的说明。

C# 勇哥对于Stopwatch进一步了解:精确测量运行时间



-------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864