windows下C语言获取精确到毫秒的时间的几个接口的测试
2014-04-29 12:26
351 查看
本文中使用的源代码转自: 《C语言如何获得精确到毫秒的时间》,有改动。
首先感谢那位作者,提供了很多信息。
直接上代码
使用了花括号来让一些同名变量变成互不干扰的局部变量,不必在意。
运行环境:三代I3 win7 x64
运行结果:GetTickCount接口比较诡异,得到结果几乎总是2995或者3011;QueryPerformanceX接口则经常少了几ms,大概在2993~3000;GetSystemTime接口和clock接口则很准确,只有一次出现了3001,也属于正常误差。
看来以后就用这两个了。
如有错漏,欢迎指正。
首先感谢那位作者,提供了很多信息。
直接上代码
#include <windows.h> #include <stdio.h> #include <time.h> int main() { { DWORD start, stop; start = GetTickCount(); Sleep(3000); stop = GetTickCount(); printf("GetTickCount: %lu ms\n", stop - start); } { LARGE_INTEGER li; LONGLONG start, end, freq; QueryPerformanceFrequency(&li); freq = li.QuadPart; QueryPerformanceCounter(&li); start = li.QuadPart; Sleep(3000); QueryPerformanceCounter(&li); end = li.QuadPart; int useTime =(int)((end - start) * 1000 / freq); printf("QueryPerformanceX: %d ms\n", useTime); } { SYSTEMTIME t1, t2; GetSystemTime(&t1); Sleep(3000); GetSystemTime(&t2); printf("GetSystemTime: %u ms\n", ((t2.wMinute - t1.wMinute) * 60 + t2.wSecond - t1.wSecond) * 1000 + t2.wMilliseconds - t1.wMilliseconds); } { int t1, t2; t1 = clock(); Sleep(3000); t2 = clock(); printf("clock: %d ms\n", t2 - t1); } return 0; }
使用了花括号来让一些同名变量变成互不干扰的局部变量,不必在意。
运行环境:三代I3 win7 x64
运行结果:GetTickCount接口比较诡异,得到结果几乎总是2995或者3011;QueryPerformanceX接口则经常少了几ms,大概在2993~3000;GetSystemTime接口和clock接口则很准确,只有一次出现了3001,也属于正常误差。
看来以后就用这两个了。
如有错漏,欢迎指正。
相关文章推荐
- Android 获取时间的几个简单接口
- VB.NET获取系统当前精确时间(毫秒级)
- Windows上几个获取时间戳函数的效率比较
- mysql 精确到毫秒的时间获取
- java中获取比毫秒更为精确的时间
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- C语言获取毫秒时间
- shell命令date获取时间精确到毫秒
- C语言如何获得精确到毫秒的时间
- C语言如何获得精确到毫秒的时间
- sqlite 获取当前时间 精确到毫秒
- new Date()获取的时间精确到毫秒
- C语言获取Linux系统精确时间的方法
- VB.NET获取系统当前精确时间(毫秒级)
- Linux获取系统当前时间(精确到毫秒)
- php 获取 当前时间戳--精确到毫秒
- WINDOWS 时间获取与精确时间获取
- 精确获取时间(QueryPerformanceCounter)测试程序效率
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- JAVA获取当前时间精确到毫秒