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

勇哥注:

.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

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


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

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

会员中心
搜索
«    2024年3月    »
123
45678910
11121314151617
18192021222324
25262728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864