算法研究之CPU占用率曲线

1.CPU占用率曲线为正弦函数曲线:

 第一步:想让CPU占用率曲线为某函数的曲线,首先是理解函数曲线与CPU占用率曲线的关系,函数y = f(x), 对应到CPU占用率曲线中来就是:x为流逝的时间,y为CPU占用率;我们知道CPU的占用率是0%-100%,也就是说函数的值域范围是[0-1],但是正弦函数的值域是[-1,1],所以正弦函数需要做个变换才能把值域变成[0,1],经过y = 1/2 + 1/2sinx变换,值域就变成[0,1]了。

 第二步:对于CPU占用率 y = 1/2 + 1/2*sinx,也就是说在某个时间点x,CPU的使用时间就是忙时间占总时间的比率为y;

想通这两点了,CPU占用率曲线为正弦函数曲线的算法也就迎刃而解了。

 

代码如下:

#include "Windows.h"

#include "stdlib.h"

#include "math.h"

 

const double SPLIT = 0.01;

const int COUNT = 100;

const double PI = 3.14159265;

const int INTERVAL = 300;

 

int main()

{

        DWORD busySpan[COUNT];

        DWORD idleSpan[COUNT];

         int half = INTERVAL/2;

        double radian = 0.0;

         for( int i=0; i<COUNT; i++ )

         {

                busySpan[i] = DWORD(  half+half*sin(PI*radian)  );                //  y = 1/2 + 1/2*(sinx)

                idleSpan[i] = INTERVAL - busySpan[i];

                radian += SPLIT;

         }

         DWORD startTime = 0;

         int j = 0;

         while(true)        

        {

                j = j%COUNT;

               startTime = GetTickCount();

               while( GetTickCount-startTime<=busySpan[j] );

                Sleep( idleSpan[j] );

                j++;

         }

         return 0;

}

 

 

你可能感兴趣的:(算法)