GetTickcount函数

GetTickCount是一种函数。GetTickCount返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD。
GetTickcount函数:它返回从操作系统启动到当前所经过的毫秒数,常常用来判断某个方法执行的时间,其函数原型是DWORD GetTickCount(void),返回值以32位的双字类型DWORD存储,因此可以存储的最大值是(2^32-1) ms约为49.71天,因此若系统运行时间超过49.71天时,这个数就会归0,MSDN中也明确的提到了:“Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days.”。因此,如果是编写服务器端程序,此处一定要万分注意,避免引起意外的状况(如需避免此种情况可使用Ctime类或者是系统API的SYSTEMTIME进行判断)。
特别注意:这个函数并非实时发送,而是由系统每18ms发送一次,因此其最小精度为18ms。当需要有小于18ms的精度计算时,应使用StopWatch方法进行。

  • 连续触发200次,实测下来,最小间隔在15ms。
  • 实际状况应该是系统每秒触发64次,间隔在15、16ms之间波动。
  • //代替time函数来初始化随机数生成器
    #include
    #include <windows.h>
    #include <WinBase.h>
    #include
    using namespace std;
    int main()
    {
    int i, k, r;
    for (i = 0; i < 10; i++)
    {
    srand (GetTickCount());
    cout<<endl;
    for (k = 0; k < 5; k++)
    {
    r = rand ();
    cout<<r<<endl;
    }
    }
    return 0;
    }

DWORD GetTickCount(void);

  1. 定义
    For Release configurations, this function returns the number of milliseconds since the device booted, excluding any time that the system was suspended. GetTickCount starts at 0 on boot and then counts up from there.
    在Release版本中,该函数从0开始计时,返回自设备启动后的毫秒数(不含系统暂停时间)。
    For Debug configurations, 180 seconds is subtracted from the the number of milliseconds since the device booted. This allows code that uses GetTickCount to be easily tested for correct overflow handling.
    在Debug版本中,设备启动后便从计时器中减去180秒。这样方便测试使用该函数的代码的正确溢出处理。
    Return Values
    The number of milliseconds indicates success.
    返回值:如正确,返回毫秒数。
    Header: Winbase.h.
    Link Library: Coredll.lib.
  2. 应用
    用来计算某个操作所使用的时间:

Start:=GetTickCount;   
   …//执行耗时的操作   
   Stop:=GetTickCount;   
   TimeUsed:=(Stop-Start)/1000;     //使用了xxx秒

用来定时:

void main() 
{
  DWORD dwLast;
  DWORD dwCurrent;
  DWORD dwInterval = 1000;
  dwLast = GetTickCount();
  int i = 0;
  while(true)
     {
        dwCurrent = GetTickCount();
        if( dwCurrent - dwLast < dwInterval )
        continue;
         //your code to be executed when interval is elapsed
        printf("dwLast,dwCurrent,diff:%d,%d,%d ",dwLast,dwCurrent,dwCurrent-dwLast);
         //your code to determine when to break
        if( i > 10 ) break;
        i++;
        dwLast = dwCurrent;
        printf(“Time is up!”);
        break;
     }
   getchar();   
   return;
}

对于一般的实时控制,使用GetTickCount()函数就可以满足精度要求,但要进一步提高计时精度,就要采用QueryPerformanceFrequency()函数和QueryPerformanceCounter()函数。这两个函数是VC提供的仅供Windows   9X使用的高精度时间函数,并要求计算机从硬件上支持高精度计时器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络大小端转换函数

网络大小端转换函数 //***************************************************************************** // // htonl/ntohl - big endian/little endian byte swapping macros for // 32-bit (long) values // //**********************************************************…

5-全排列总结:

https://www.nowcoder.com/acm/contest/76/H 给一道题&#xff0c;可以去测试代码。 这里总结一下全排列的几种方法&#xff1a; 方法一&#xff1a;利用交换排列&#xff1a;缺点&#xff1a;不能按字典序排列&#xff0c;但可以借助set处理。 #include <bits/stdc.h> …

大大大大数怎么求余?C语言

问题&#xff1a;一个特别大的数除以23求余数用C语言应该怎么算啊&#xff1f;比如23232323232323232323232323232323232323232323232323232323233除以23&#xff0c;怎么算余数&#xff1f;数据类型在计算机的存储是有大小限制的&#xff0c;所以才出现了大数求余这种问题&…

substr

substr &#xff08;C语言函数&#xff09; 编辑 substr是C语言函数&#xff0c;主要功能是复制子字符串&#xff0c;要求从指定位置开始&#xff0c;并具有指定的长度。如果没有指定长度_Count或_Count_Off超出了源字符串的长度&#xff0c;则子字符串将延续到源字符串的结尾…

***站长自述挂马经历 提醒挂马者回头是岸

我做站都已经接近三年了&#xff0c;期间像很多人一样买过很多玉米&#xff0c;但是因为养不起&#xff0c;至今只保留了一个域名&#xff08;159e.cn&#xff09; &#xff0c;当时学校正流行移动159的号码&#xff0c;然后e在网络上代表很多意思&#xff0c;就注册了这个域名…

微信公众号--相关资料

相关资料 l 官方文档&#xff1a;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1445241432 l 测试号&#xff1a;https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?actionshowinfo&tsandbox/index l 接口调试地址&#xff1a;https://mp.weixin.qq.…

程序员因拒绝带电脑回家工作被开除!获赔19.4万元

近日&#xff0c;男子拒绝春节带电脑回家工作被开除的消息&#xff0c;成为了不少网友关注的焦点&#xff0c;引发网友共鸣。因为春节拒绝带工作电脑回家被开除&#xff0c;上海一位软件工程师起诉公司获赔19.4万元。2月2日&#xff0c;据上海浦东法院公众号消息&#xff0c;该…

键值键名

在注册表中 所谓的键&#xff0c;是指一个注册表条目。 键名&#xff0c;是这个条目的名称 键值是为这个条目所赋予的值。 比如&#xff1a; NoDesktop1 这就是一个键 NoDesktop是一个键名 1就是一个键值 这个条目的意思是说&#xff1a;NoDesktop是没有桌面当值为1的时候&…

随便写写(5)

也许是今年发生的事情太多了&#xff0c;所以比以前要更关注时事&#xff0c;虽然面对一些既成的事实&#xff0c;难免要进行痛心的思考。 昨天晚上关注了一下东方卫视播出的9.8特大尾矿库溃坝事故的后续报道&#xff0c;这起特大人为事故已经得到了认定&#xff0c;相关的责任…

STM32 LED灯的另一种写法

STM32 LED灯的另一种写法 #ifndef __BSP_LED_ #define __BSP_LED_#include <MM32x103.h> // 这个换成STM32的库文件就行 #include "type.h"// #define LED1_RUN_GRP GPIOC #define LED1_RUN_IDX GPIO_Pin_6 #define LED1_RUN_OFF() GPIO_ResetBit…

C# 获取枚举的描述属性

https://www.cnblogs.com/TanSea/p/6923743.html 转载于:https://www.cnblogs.com/niuniu0108/p/8532161.html

利用C语言中的setjmp和longjmp,来实现异常捕获和协程

一、前言二、函数语法介绍与 goto 语句比较与 fork 函数比较与 Python 语言中的 yield/resume 比较三、利用 setjmp/longjmp 实现异常捕获四、利用 setjmp/longjmp 实现协程五、总结一、前言 在 C 标准库中&#xff0c;有两个威力很猛的函数&#xff1a;setjmp 和 longjmp&…

VS2010

https://jingyan.baidu.com/article/d5a880eb74824013f147cca4.html

1、如何理解SQL Server的实例

在项目实施过程中&#xff0c;不少用户会有这样的需求&#xff1a;要求开发一套基于SQL Server的新系统&#xff0c;这套系统验收通过后&#xff0c;要和一个原有的SQL Server系统合并&#xff0c;共用一个服务器&#xff0c;所以不能为新系统提供单独的服务器&#xff08;资金…

centos6.9系列LNMP环境的安装

一、Nginx 1.先解决Nginx的依赖关系&#xff1a; yum install -y pcre-devel openssl-devel 2.安装wget&#xff1a;sudo yum -y install wget 3.下载nginx的安装包&#xff1a;wget http://nginx.org/download/nginx-1.10.3.tar.gz 4.解压nginx文件包&#xff1a;tar xf nginx…

MDK临界区

Keil临界区/********************************************************************************************************* ** Function name: __ENTER_CIRTICAL, __EXIT_CIRTICAL ** Descriptions: 临界区代码保护宏 ** input parameters: 返回…

Linux 修改 ELF 解决 glibc 兼容性问题

转自&#xff1a;Soul Of Free Loophttps://zohead.com/archives/mod-elf-glibc/Linux glibc 问题相信有不少 Linux 用户都碰到过运行第三方&#xff08;非系统自带软件源&#xff09;发布的程序时的 glibc 兼容性问题&#xff0c;这一般是由于当前 Linux 系统上的 GNU C 库&am…

VS2010创建ATL工程及使用C++测试COM组件

VS2010创建ATL工程及使用C测试COM组件 1.创建ATL项目&#xff0c;取名MyCom 2. ATL 项目向导&#xff0c;勾选 【支持COM 1.0】和【支持部件注册器】&#xff0c;其他默认&#xff0c;点击完成。 3.在该项目中添加类 4.添加一个ATL简单对象 5. ATL 简单对象向导&#xff0c…

基于气动人工肌肉的双足机器人关节设计

介绍了一种由气动人工肌肉构建的双足机器人关节&#xff0c;该关节利用气动人工肌肉的柔性特性&#xff0c;可以有效控制双足机器人快速行走或跑步时的落地脚冲击问题。   详细给出了气动人工肌肉的工作原理以及由其构成的关节系统的硬件架构。同时介绍了基于此硬件关节搭建的…

函数内置方法

abs&#xff08;&#xff09; 取绝对值 dict&#xff08;&#xff09; 数据转为字典 help&#xff08;&#xff09; 帮助 min&#xff08;&#xff09; 取最小值 max&#xff08;&#xff09; 取最大值 setattr&#xff08;&#xff09;未讲 all&#xff08;&#xff09; 判断…