GetTickCount() 函数的作用和用法

简介: GetTickCount() 函数是 Windows API 中的一个重要函数,用于获取自系统启动以来经过的毫秒数。这个函数通常用于计算时间间隔、性能分析和定时等场景。

函数原型

DWORD GetTickCount(void);
php
25 Bytes
© 菜鸟-创作你的创作
返回值

返回类型:DWORD(无符号 32 位整数)
返回值:返回自系统启动以来经过的毫秒数。返回值的最大值是 0xFFFFFFFF(即 4,294,967,295 毫秒,约 49.7 天)。当这个值超出 DWORD 的最大值时,会从 0 开始重新计数。
常见用途

测量时间间隔:
GetTickCount() 可用于计算某个操作的时间间隔,尤其是在没有高精度计时器的情况下,适用于需要较为粗略时间计算的场景。
超时检查:
你可以通过记录一个起始时间,然后不断检查是否经过了指定的时间,以此来判断是否发生了超时事件。
示例代码

以下是一个使用 GetTickCount() 测量程序执行时间的简单示例:

示例 1: 计算代码执行时间

include

include

int main() {
// 获取开始时间
DWORD startTime = GetTickCount();
// 模拟某些操作(例如延时)
Sleep(2000); // 延时2秒
// 获取结束时间
DWORD endTime = GetTickCount();
// 计算时间差
DWORD elapsedTime = endTime - startTime;
std::cout << "Elapsed time: " << elapsedTime << " milliseconds" << std::endl;
return 0;
}
php
363 Bytes
© 菜鸟-创作你的创作
代码说明:

GetTickCount() 获取程序启动以来的毫秒数。
使用 Sleep(2000) 函数让程序暂停 2000 毫秒(即 2 秒),模拟某些操作。
再次调用 GetTickCount() 获取结束时间。
计算起始时间和结束时间的差值,即为操作执行的时间间隔。
注意事项

溢出问题:GetTickCount() 返回的是一个 DWORD 类型的值,最大值为 0xFFFFFFFF,约 49.7 天。即如果系统持续运行超过 49.7 天,返回值会回绕至 0。如果需要避免溢出问题,推荐使用 GetTickCount64()(在 64 位系统中可用)来获取更大的计时范围。
精度限制:GetTickCount() 的精度大约是 10 毫秒,这意味着它不是高精度计时器。如果需要更高精度的时间测量,可以使用 QueryPerformanceCounter()。
使用 GetTickCount64() 代替

如果你需要避免 GetTickCount() 溢出的问题,可以使用 GetTickCount64(),这是一个类似的函数,返回一个 64 位的值,计时范围大大增加。

include

include

int main() {
// 获取64位的启动时间
ULONGLONG startTime = GetTickCount64();
// 模拟某些操作(例如延时)
Sleep(2000); // 延时2秒
// 获取结束时间
ULONGLONG endTime = GetTickCount64();
// 计算时间差
ULONGLONG elapsedTime = endTime - startTime;
std::cout << "Elapsed time: " << elapsedTime << " milliseconds" << std::endl;
return 0;
}
php
383 Bytes
© 菜鸟-创作你的创作
GetTickCount64() 返回的值是一个 ULONGLONG 类型的 64 位整数,可以避免 49.7 天的溢出问题。

总结

GetTickCount() 是一个用来获取系统启动以来的毫秒计时函数,适合用于粗略的时间间隔计算。
它返回一个 32 位的无符号整数,如果系统运行超过大约 49.7 天,返回值会溢出。
如果需要更大的计时范围或更高精度的时间测量,可以使用 GetTickCount64() 或 QueryPerformanceCounter()。
https://www.52runoob.com/archives/4198

目录
相关文章
|
安全 Linux Perl
学会了如何查看Linux服务器日志,才敢说自己会Linux
学会了如何查看Linux服务器日志,才敢说自己会Linux
1561 0
|
安全 网络安全 数据安全/隐私保护
【计算机网络】URL概念及组成
【计算机网络】URL概念及组成
|
28天前
|
人工智能 缓存 API
‌DeepSeek V4 Pro在阿里云怎么调用?阿里云百炼支持‌DeepSeek V4 Pro吗?
阿里云百炼正式支持DeepSeek V4 Pro(模型ID:deepseek-v4-pro),支持OpenAI/DashScope/Anthropic兼容调用,享免费100万Tokens。支持思考模式、Function Calling及百万级上下文,可按量付费或订阅TokenPlan(个人版39元/月)。在阿里云百炼官网:https://t.aliyun.com/U/fPVHqY 免费领取千万Tokens
|
人工智能 Devops 虚拟化
VMware vSphere 8.0 Update 3d 下载 - 企业级工作负载平台
VMware vSphere 8.0 Update 3d 下载 - 企业级工作负载平台
10889 17
|
存储 API 数据安全/隐私保护
使用宝塔搭建MinIO并且设置域名访问
本文介绍了如何使用宝塔面板搭建MinIO并设置域名访问的完整流程。首先通过宝塔面板安装Docker及MinIO,配置域名与端口,完成Web管理界面的部署。接着,创建存储桶、配置访问规则和API密钥,实现资源的安全管理。最后,通过反向代理设置API接口,测试文件上传功能,确保MinIO可用于图片和文件资源的存储。作者Harry技术还分享了相关开源项目,适合开发者快速上手。
2683 2
使用宝塔搭建MinIO并且设置域名访问
|
人工智能 Java 程序员
一文彻底搞清楚C语言的条件语句的Switch语句
本文详细介绍了C语言中的switch语句,包括其语法格式、运行流程、示例代码及注意事项。switch语句不仅使多分支选择更加清晰易读,还能在某些情况下提升性能。通过具体实例,如判断月份天数和数字转星期,帮助读者更好地理解和应用这一控制结构。
1401 1
一文彻底搞清楚C语言的条件语句的Switch语句
|
SQL 数据采集 关系型数据库
sqlyog下载和卸载的最新详细过程,超多图快速安装或者卸载
sqlyog下载和卸载的最新详细过程,超多图快速安装或者卸载
7015 0
|
机器学习/深度学习 人工智能 算法
【AI系统】推理系统介绍
推理系统是一种专门用于部署和执行神经网络模型预测任务的AI系统,类似于Web服务或移动端应用,但专注于AI模型的部署与运行。它支持将模型部署到云端或边缘端,处理用户请求。本文介绍了训练与推理的基本流程、两者差异、推理系统的优化目标及挑战,并对比了推理系统与推理引擎的流程结构,强调了设计推理系统时需考虑的优化目标,如灵活性、延迟、吞吐量、高效率、扩展性和可靠性。同时,文章还讨论了推理系统与推理引擎的区别,帮助读者深入了解推理引擎的核心技术。
884 5