控制CUP佔用率曲線

2021-09-08 12:24:01 字數 2619 閱讀 5600

在《程式設計之美》上看過一道面試題就是要求:輸出cup佔用率的曲線圖

#include #include 

#include

#include

using

namespace

std;

//得到迴圈0xffffffff次用的秒數

unsigned int

test()

#define t 20000 //

週期時間 20秒

#define c 100 //

取樣點時間間隔

#define pi 3.1415 //

piconst unsigned int _count = 0xffffffff / (test() * 1000); //

取樣間隔可以執行的迴圈數目 //考慮到了當前系統的執行程式

const unsigned int n = t / c; //

週期內取樣點數目

unsigned int v[n] = ; //

所有取樣點連續執行迴圈數

unsigned int mt[n] = ; //

所有取樣點休眠毫秒數

intmain()

for(;;)}}

實驗結果:指定執行cup和核數有關吧

首先什麼是cpu佔用率?

在任務管理器的乙個重新整理周期內,cpu忙(執行應用程式)的時間和重新整理周期總時間的比率,就是cpu的佔用率,也就是說,任務管理器中顯示的是每個重新整理周期內cpu佔用率的統計平均值。

因此可以寫個程式,在乙個重新整理周期中,一會兒忙,一會兒閒,調節忙/閒比例,就可以控制cpu占有率!

題目:寫乙個程式,讓使用者來決定windows任務管理器(task manager)的cpu佔用率。程式越精簡越好,計算機語言不限。例如,可以實現下面三種情況:

1.    cpu的佔用率固定在50%,為一條直線;

2.    cpu的佔用率為一條直線,但是具體佔用率由命令列引數決定(引數範圍1~ 100);

3.    cpu的佔用率狀態是乙個正弦曲線。

直線cpu:使x=0即可:

#include #include 

#include

#include

using

namespace

std;

//得到迴圈0xffffffff次用的秒數

unsigned int

test()

#define t 20000 //

週期時間 20秒

#define c 100 //

取樣點時間間隔

#define pi 3.1415 //

piconst unsigned int _count = 0xffffffff / (test() * 1000); //

取樣間隔可以執行的迴圈數目

const unsigned int n = t / c; //

週期內取樣點數目

unsigned int v[n] = ; //

所有取樣點連續執行迴圈數

unsigned int mt[n] = ; //

所有取樣點休眠毫秒數

intmain()

//for (;;)

// //}

//直線cpu

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

for(;;)

}}//

沒有考慮現在系統cpu使用情況

//#include

//#include

//int main(void)

////

dword starttime = 0;

//int j = 0;

//while (true)

////

return 0;

//}

結果:

reference:

cpu正弦曲線

演算法研究之CPU佔用率曲線

1.cpu佔用率曲線為正弦函式曲線 第一步 想讓cpu佔用率曲線為某函式的曲線,首先是理解函式曲線與cpu佔用率曲線的關係,函式y f x 對應到cpu佔用率曲線中來就是 x為流逝的時間,y為cpu佔用率 我們知道cpu的佔用率是0 100 也就是說函式的值域範圍是 0 1 但是正弦函式的值域是 1...

讓CPU佔用率畫出正弦曲線

都說計算機程式設計乏味,可是好多程式設計師卻玩地津津有味。計算機的世界什麼都可以用來做為程式設計師的遊戲,比如cpu。下面就讓我們來讓windows下的任務管理器聽我們指揮,畫出完美的正弦曲線吧。思路 0 目測windows下任務管理器重新整理頻率為1s,每一次重新整理的cpu佔用率其實就是這一時間...

讓CPU佔用率畫出正弦曲線

分類 程式設計之美 math.h windows manager 任務程式設計遊戲 都說計算機程式設計乏味,可是好多程式設計師卻玩地津津有味。計算機的世界什麼都可以用來做為程式設計師的遊戲,比如cpu。下面就讓我們來讓windows下的任務管理器聽我們指揮,畫出完美的正弦曲線吧。思路 0 目測win...