在平时的程序开发尤其是游戏等多媒体的程序开发中,要经常用到时间函数用来衡量程序的运行时间、算法的效率或者在某个时间进行特定的操作等。操作系统和编译器为我们提供了很多时间函数,这些函数的精度也各不相同,所以他们的用途也不尽相同。下面简单总结一下平时常用的几个时间函数。
time(&time);
……
……
DWORD end = GetTickCount();
DWORD last = end - start;
LARGE_INTEGER m_nBeginTime;
LARGE_INTEGER m_nEndTime;
QueryPerformanceFrequency(&m_nFreq); // 获取时钟周期
QueryPerformanceCounter(&m_nBeginTime); // 获取时钟计数
Sleep(100);
QueryPerformanceCounter(&m_nEndTime);
cout << (m_nEndTime.QuadPart-m_nBeginTime.QuadPart)*1000/m_nFreq.QuadPart << endl;
- C语言下的Time函数:获取当前时间
- 使用:
time(&time);
- 精度:秒级别
- CTime的GetCurrentTime:获取当前系统时间
- 使用:
- 精度:秒级别。可以获得当前系统的。可以活得当前系统的年、月、日、星期、时、分和秒
- Windows下的GetTickCount():用于判断两断时间的间隔
- 使用:
……
……
DWORD end = GetTickCount();
DWORD last = end - start;
- 精度:毫秒级
- Windows下timeGetTime:返回系统从开机启动到现在的时间
- 使用:同GetTickCount()使用方法一样
- 精度:毫秒级
- 高精度时控函数QueryPerformanceFrequency,QueryPerformanceCounter
- 使用:
LARGE_INTEGER m_nBeginTime;
LARGE_INTEGER m_nEndTime;
QueryPerformanceFrequency(&m_nFreq); // 获取时钟周期
QueryPerformanceCounter(&m_nBeginTime); // 获取时钟计数
Sleep(100);
QueryPerformanceCounter(&m_nEndTime);
cout << (m_nEndTime.QuadPart-m_nBeginTime.QuadPart)*1000/m_nFreq.QuadPart << endl;
- 精度:毫秒级(最精确)