在《程式設計之美》上看過一道面試題就是要求:輸出cup佔用率的曲線圖
#include #include實驗結果:指定執行cup和核數有關吧#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佔用率?
在任務管理器的乙個重新整理周期內,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...