C# 精准计时之 QueryPerformanceCounter QueryPerformanceFrequency用法

C# 用法:

    public static class QueryPerformanceMethd
    {
        [DllImport("kernel32.dll")]
      public  extern static short QueryPerformanceCounter(ref long x);

        [DllImport("kernel32.dll")]
        public extern static short QueryPerformanceFrequency(ref long x);
    }
    static void Main(string[] args)
        {
            long stop_Value = 0;
            long start_Value = 0;
            long freq = 0;

            QueryPerformanceMethd.QueryPerformanceFrequency(ref freq);
            QueryPerformanceMethd.QueryPerformanceCounter(ref start_Value);
            //Fun()    需要计时方法
            QueryPerformanceMethd.QueryPerformanceCounter(ref stop_Value);
            double time = (double)(stop_Value - start_Value) / (double)(freq);

            Console.WriteLine(time);//单位S
            Console.ReadLine();
        }    

计算所得time即为fun()方法所消耗时间。

C++中QueryPerformanceCounter  QueryPerformanceFrequency的用法

#include "stdafx.h"
#include "windows.h"

void main()
{
    LARGE_INTEGER nFreq;
    LARGE_INTEGER nBeginTime;
    LARGE_INTEGER nEndTime;
    double time;
    QueryPerformanceFrequency(&nFreq);
    QueryPerformanceCounter(&nBeginTime);
    Sleep(1000);
    QueryPerformanceCounter(&nEndTime);
    time = (double)(nEndTime.QuadPart - nBeginTime.QuadPart) / (double)nFreq.QuadPart;
    printf("%f\n", time);
    system("Pause");
}

计算Sleep(1000)所消耗的精确时间,并非精确的1s

时间: 2024-10-11 07:18:11

C# 精准计时之 QueryPerformanceCounter QueryPerformanceFrequency用法的相关文章

QueryPerformanceFrequency用法--Windows高精度定时计数

在多核心或多处理器的计算机上,特别是在支持CPU频率动态调整的计算机上,windows系统下的QueryPerformanceFrequency()获取HPET(如果存在)的频率,而QueryPerformanceCounter()获取HPET(如果存在高精度事件定时器(High Precision Event Timer))自上电以来时钟周期数,与CPU频率无关.前一个函数不会因为线程运行所在的CPU不同或CPU的频率在不同时刻的差异而反馈不同的值,系统上电初始化以后便不会改变,后一个函数的源

精确获取时间(QueryPerformanceCounter)

LARGE_INTEGER tima,timb; QueryPerformanceCounter(&tima); 在 Windows Server 2003 和 WindowsXP 中使用 QueryPerformanceCounter 函数的程序可能执行不当 QueryPerformanceCounter 來精確計算執行時間QueryPerformanceCounter 來精確計算執行時間// 這個程式展示了如何使用QueryPerformanceCounter 來精確計算執行時間//代码 1

C++统计精确时间

QueryPerformanceFrequency用法   精确获取时间:   QueryPerformanceFrequency() - 基本介绍   类型:Win32API   原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);   作用:返回硬件支持的高精度计数器的频率.   返回值:非零,硬件支持高精度计数器:零,硬件不支持,读取失败.   QueryPerformanceFrequency() - 技术特点  

高精度定时器实现 z

1背景Permalink .NET Framework 提供了四种定时器,然而其精度都不高(一般情况下 15ms 左右),难以满足一些场景下的需求. 在进行媒体播放.绘制动画.性能分析以及和硬件交互时,可能需要 10ms 以下精度的定时器.这里不讨论这种需求是否合理,它是确实存在的问题,也有相当多的地方在讨论,说明这是一个切实的需求.然而,实现它并不是一件轻松的事情. 这里并不涉及内核驱动层面的定时器,只分析在 .NET 托管环境下应用层面的高精度定时器实现. Windows 不是实时操作系统,

c/c++测试函数的运行时间(八种方法)

目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但是各种计时函数的精度不一样.下面对各种计时函数,做些简单记录. void foo() { long i; for (i=0;i<100000000;i++) { long a= 0; a = a+1; } } 方法1,time()获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整

C++中几种测试程序运行时间的方法&lt;转&gt;

转的地址:https://www.cnblogs.com/silentteen/p/7532855.html 1.GetTickCount()函数 原理: GetTickCount()是获取系统启动后的时间间隔.通过进入函数开始定时,到退出函数结束定时,从而可以判断出函数的执行时间(单位ms),这种时间也并非是函数或者算法的真实执行时间,因为在函数和算法线程不可能一直占用CPU,对于所有判断执行时间的函数都是一样,不过基本上已经很准确,可以通过查询进行定时.注意:GetTickCount()精确

C#中自定义高精度Timer定时器的实例教程

Timer 用于以用户定义的事件间隔触发事件.Windows 计时器是为单线程环境设计的,其中,UI 线程用于执行处理.它要求用户代码有一个可用的 UI 消息泵,而且总是在同一个线程中操作,或者将调用封送到另一个线程. 使用此计时器时,请使用控件的Tick事件执行轮询操作,或在指定的时间内显示启动画面.每当 Enabled 属性设置为true且Interval属性大于0时,将引发Tick事件,引发的时间间隔基于Interval属性设置.System.Windows.Forms.Timer是应用于

英文不好也能快速&quot;记忆&quot; API

英文不好不要紧,把API函数导入打字练习类软件,即是练习打字速度,提高编程效率:也能短时间记忆API. 坚持每天打一遍,约2小时,连续打两周,会对API有很好的记忆,此方法是结合英文学习方法!以下是Window API函数例表,大家可以试试效果特别好! AbnormalTermination AbortDoc AbortPath AbortPrinter AbortProc AbortSystemShutdown AccessNtmsLibraryDoor ActivateKeyboardLay

strcmp和==比较

#include <stdio.h> #include <tchar.h> #include <iostream> #include <string> #include <Windows.h> using namespace std; #pragma comment(lib, "winmm.lib") int StringCompare(){ string strSource = "hello world!"