编程之美--CPU占用率问题所提到函数的总结
2013-12-01 22:38
183 查看
第一次自己写博客,是将几篇觉得写的好的文章综合起来,应该算是原创吧,大家凑活看
一.利用QueryPerformanceFrequency() 和QueryPerformanceFrequency()组合记录运行时间
使用代码如下:
两个函数都接受一个LARGE_INTEGER 类型的参数,作为返回值
一下是LARGE_INTEGER的结构:
当使用的系统为32位时,LowPart和HighPart分别表示低32位和高32位,当为64位操作系统时,可以直接使用QuadPart。
QueryPerformanceCounter(&data)是将当前的计数值返回给data,所以在程序中需要在所需要测的运行时间的两头分别加入该函数,得到计数差,记为dcount。
QueryPerformanceFrequency(&data) 将当前的时钟频率返回给data,记为f。
整个的运行时间是 T = (double) dcount *1.0 / f;
二.关于多核处理器的问题
1.书中提到的是用GetProcessorInfo(),我通过翻网页,找的是GetSystemInfo() 函数。
需要参数 _SYSTEM_INFO ,存放系统的具体信息,MSDN有详细讲解:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724958(v=vs.85).aspx
代码如下:
如此即可得到CPU的具体个数。
2.利用SetThreadAffinityMask()可以设置当前线程运行在哪一个核上
第一参数是线程的句柄,第二个参数是运行在哪一个核上。
是将当前运行线程设置在第一个核上运行
一.利用QueryPerformanceFrequency() 和QueryPerformanceFrequency()组合记录运行时间
使用代码如下:
LARGE_INTEGER data; LONGLONG f,tb,te; QueryPerformanceFrequency(&data); f = data.QuadPart; QueryPerformanceCounter(&data); tb = data.QuadPart; Sleep(1); QueryPerformanceCounter(&data); te = data.QuadPart; cout<<(double)((te-tb)*1.0/f);
两个函数都接受一个LARGE_INTEGER 类型的参数,作为返回值
一下是LARGE_INTEGER的结构:
typedef union _LARGE_INTEGER { struct { DWORD LowPart; LONG HighPart; }; LONGLONG QuadPart; } LARGE_INTEGER;
当使用的系统为32位时,LowPart和HighPart分别表示低32位和高32位,当为64位操作系统时,可以直接使用QuadPart。
QueryPerformanceCounter(&data)是将当前的计数值返回给data,所以在程序中需要在所需要测的运行时间的两头分别加入该函数,得到计数差,记为dcount。
QueryPerformanceFrequency(&data) 将当前的时钟频率返回给data,记为f。
整个的运行时间是 T = (double) dcount *1.0 / f;
二.关于多核处理器的问题
1.书中提到的是用GetProcessorInfo(),我通过翻网页,找的是GetSystemInfo() 函数。
需要参数 _SYSTEM_INFO ,存放系统的具体信息,MSDN有详细讲解:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724958(v=vs.85).aspx
代码如下:
SYSTEM_INFO si; GetSystemInfo(&si); cout<<si.dwNumberOfProcessors;
如此即可得到CPU的具体个数。
2.利用SetThreadAffinityMask()可以设置当前线程运行在哪一个核上
DWORD_PTR SetThreadAffinityMask ( HANDLE hThread, // handle to thread DWORD_PTR dwThreadAffinityMask // thread affinity mask );
第一参数是线程的句柄,第二个参数是运行在哪一个核上。
SetThreadAffinityMask(GetCurrentThread(),0x01);
是将当前运行线程设置在第一个核上运行
相关文章推荐
- win32编程中遇到的一个CPU占用率过高问题
- SNMP阶段总结,基于SNMP++提取进程内存使用,CPU占用率,进程名称,PID,路径等信息的功能函数,生成了DLL,源码送上
- C++ 多线程编程解决CPU占用率高问题
- C++ 多线程编程解决CPU占用率高问题
- [.NET][编程之美][1.1]C# 实现让CPU占用率曲线听你的指挥 – 可指定运行核心
- C++与opencv的一些编程和函数的使用错误总结
- while(true)循环与CPU占用率问题
- ios编程时常见问题总结
- 关于vmstat,top,ps aux查看的cpu占用率不一致的问题
- Android编程之权限机制总结与常见权限不足问题分析
- JavaScript学习总结-技巧、有用函数、简洁方法、编程细节
- liunx下cpu占用率高如何定位代码问题
- OpenCv函数cvLoadImage的使用问题总结
- CentOS6.5下Mysql 未设置query_cache_size 导致CPU占用率高的问题解决方法_20160119_莫小贝
- 记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
- PHP字符处理函数的问题总结
- [PY3]——字典排序问题总结—(zip()函数、OrderedDict、itemgetter函数)
- 编程之美:让CPU占用率曲线听你指挥
- JVM FULL GC太频繁,CPU占用率过高问题
- 网络编程常见问题总结