Windows编程中实现精确计时
来源:互联网 发布:数据修炼系统 编辑:程序博客网 时间:2024/05/20 22:40
QueryPerformanceCounter()函数返回高精确度性能计数器的值,它可以以微妙为单位计时.
QueryPerformanceCounter()确切的精确计时的最小单位是与系统有关的,QueryPerformanceFrequency()提供了这个系统频率值,它返回每秒嘀哒声的个数.
int gettimeofday(struct timeval *tv, void *tzp)
{
static struct timeval stv = { 0 }; /* initial timeval */
static INT64 sct = 0, tick = 0; /* Query tick */
static int initialized = -1; /* initial flag */
LARGE_INTEGER startCount = { 0 }; /* Start Count */
LARGE_INTEGER tickPerSec = { 0 }; /* Tick per second */
struct timeb tb = { 0 }; /* Timeb struct */
LARGE_INTEGER count = { 0 };
INT64 c = 0;
if (initialized == -1) {
ftime(&tb);
stv.tv_sec = (long)tb.time;
stv.tv_usec = tb.millitm * 1000;
if (!QueryPerformanceFrequency(&tickPerSec)) {
LOG_MSG("QueryPerformanceFrequency(): No high-reso counter.\n");
return -1;
}
if (!QueryPerformanceCounter(&startCount)) {
LOG_MSG("QueryPerformanceCounter(): No high-reso counter.\n");
return -1;
}
sct = startCount.QuadPart; tick = tickPerSec.QuadPart;
initialized = 0;
}
if (!QueryPerformanceCounter(&count))
return -1;
c = count.QuadPart;
tv->tv_sec = stv.tv_sec + (long)((c - sct) / tick);
tv->tv_usec = stv.tv_usec + (long)(((c - sct) % tick) * 1000000 / tick);
if (tv->tv_usec >= 1000000) {
tv->tv_sec++;
tv->tv_usec -= 1000000;
}
return 0;
}
http://www.cnblogs.com/dwdxdy/p/3214905.html
- Windows编程中实现精确计时
- c++实现精确计时
- J2ME实现精确秒表计时
- windows下的精确计时函数
- 精确计时
- 如何实现程序的精确计时
- 使用gettimeofday实现精确计时功能
- 使用gettimeofday实现精确计时功能
- C#实现精确计时,精度1ms
- C++中精确计时的方法
- C/C++中如何精确计时
- C/C++中如何精确计时
- C/C++中如何精确计时
- C#中精确计时的一点收获
- C/C++中如何精确计时
- C#中精确计时的一点收获
- C#中精确计时的一点收获!!!
- C#中精确计时的一点收获
- Linux内核版本号命名的规则
- c语言函数指针的理解与使用
- JSP乱码问题
- C++11带来的move语义
- dll和so文件区别与构成
- Windows编程中实现精确计时
- HDU1026(BFS求最短路径并记录)
- 数据结构数据生成器--生成树 bzoj1036
- android eclipse开发时Ctrl+鼠标左键不能打开xml文件
- 需要这样一个记事本-17 VS 2010 远程调试
- [NOI 2006]最大获利
- stl hashmap与map hashmap与hashtable
- STL map与Boost unordered_map
- 把ORM封装成一个类(linq to entity)