• 一个 C# 获取高精度时间类(调用API QueryP*)


    如果你觉得用 DotNet 自带的 DateTime 获取的时间精度不够,解决的方法是通过调用 QueryPerformanceFrequency 和 QueryPerformanceCounter这两个API来实现。

    QueryPerformanceCounter 最小分辨率: 1/1193182 秒
    API 开销: 1.92761875388667E-05 秒

    多个语句执行之前 GetTickCount 或 timeGetTime 记录的更改。实际的循环数因操作系统正在执行的后台任务而异。
    另一方面,QueryPerformanceCounter 更改,该值指示在高分辨率的时间中其用途的连续 API 调用之间的值。在这种情况下,分辨率是一个 microsecond 的顺序。因为系统依赖于分辨率,不存在,它测量标准单元。您必须通过确定的秒数经过 QueryPerformanceFrequency 划分不同之处。在上述情况只调用 API 的开销是关于 19 微秒为单位)。这将不得不上进行减法运算.

    Code

    调用代码举例:
    Timer t = new Timer();
    double time = t.GetAbsoluteTime();
    t.GetElapsedTime();
    t.Reset();
    t.GetTime();

    ////////////////////////////////////////////////////

    在某些计算机上,由 QueryPerformanceFrequency 返回的结果将作为 CPU 的时钟速度。在处理器运行速度超过 2.1 GHz 的计算机上,该频率值需要至少 32 位的精度。某些程序将 QueryPerformanceFrequency 的结果用作经过签署的整数值,该值只有 31 位精度并带有符号标志。这些程序在这些较快的 CPU 上无法正确运行。要避免出现此问题,程序必须使用由 QueryPerformanceFrequencyQueryPerformanceCounter 返回的所有64 位。
    有关超线程技术的更多信息,请访问下面的 Intel Web 站点:

    http://cedar.intel.com/cgi-bin/ids.dll/topic.jsp?catCode=CDN

  • 相关阅读:
    POJ2442 Sequence
    等式
    GYM101635E Ingredients
    单片机之PID算法
    信号完整性一
    C程序编程规范一
    FATFS文件系统的移植
    FreeRTOS移植到STM32上的移植过程
    codeblocks+SDCC开发51单片机
    java5种打印数组
  • 原文地址:https://www.cnblogs.com/sczw-maqing/p/3364152.html
Copyright © 2020-2023  润新知