编程之美--CPU占用率问题所提到函数的总结

原创 2013年12月01日 22:38:09

第一次自己写博客,是将几篇觉得写的好的文章综合起来,应该算是原创吧,大家凑活看

一.利用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);

     是将当前运行线程设置在第一个核上运行

相关文章推荐

控制你的CPU占用率,读编程之美第一章的一点总结

题目:写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率。程序越精简越好,计算机语言不限。例如,可以实现下面三种情况: 1.    CPU的占用率固定在50%...

编程之美 之 让CPU占用率听你指挥

昨天在bbs上淘到了这本编程之美,顺手刷了第一章,非常有意思。第一章的要求是要控制CPU曲线,绘制出相应的形状。 拿到这个问题,我的第一反应是, 是不是有这么一个API,能在任务管理器上的相应区域直...

读编程之美(一) 让cpu占用率听你指挥

实现对多核cpu的控制,一个画sin曲线,一个画直线。因为电脑的配置不同,可能结果不是很理想,调整程序中的时间参数就可以了。 #include #include //for 多线程 #...
  • hwb506
  • hwb506
  • 2011年08月29日 21:05
  • 592

《编程之美》1.1 让CPU占用率曲线听你指挥

这是微软亚洲研究院编写的一本书《编程之美》上的第一个例子。 效果是让Windows任务管理器的CPU利用率画出一条正弦曲线。下面是效果图:   一、原理     通过观察,任务管理器里CPU利...

编程之美 1.1 让CPU占用率曲线听你的指挥

编程之美 1.1 让CPU占用率曲线听你的指挥 本题是编程之美的第一题, 好的开始是成功的一半. 本文实现了"正弦曲线"的部分, 使用单核, CPU可以跑出一条正弦曲线. 算法的基本思想是: 首先计...

《编程之美》之读书笔记 1.1让CPU占用率曲线听你指挥

写一个程序,让用户来决定Windows任务gauna

编程之美-控制CPU占用率曲线方法整理

方法一:简单的解法 方法二:使用GetTickCount()和Sleep() 方法三:你能动态适应的解法 方法四:正弦曲线 方法五: 附:一些与线程/进程/系统效能相关的...

编程之美:让CPU占用率曲线听你指挥

题目:写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率。程序越精简越好,计算机语言不限。例如,可以实现下面三种情况:1.    CPU的占用率固定在50%,为...
  • wesweeky
  • wesweeky
  • 2011年05月07日 22:49
  • 24271

JAVA控制CPU占用率(编程之美有感)(一)

JAVA控制CPU占用率(编程之美有感)(一)   自从看完编程之美的第一篇问题分析,内心十分触动:这是什么鬼?还能这样玩?之前对CPU的占用率只局限于: “卧槽,我内存满了,电脑卡死了”。 “擦!...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编程之美--CPU占用率问题所提到函数的总结
举报原因:
原因补充:

(最多只允许输入30个字)