今天開始看程式設計之美 。第乙個問題是cpu的使用率控制,微軟的問題果然高大上,我一看就傻了,啥也不知道。沒追求直接看答案試了一下。發現自己電腦太好了,4核8執行緒,程式亂飄。加了乙個程序繫結,可以控制乙個cpu的占有率。
**結果如下:
現在的疑問是,不知道如何指定具體的某乙個cpu. setthreadaffinitymask的第二個引數改了後和自己想要的不一樣。也不知道如何實現所有cpu占有率的同時控制。
第二個版本 按照書中給的可以根據不同的cpu精確計算時間的** 效果好很多
//比初始最簡單的版本好很多 cpu使用中可以得到非常漂亮的直線 不像之前有鋸齒
第三個版本 正弦曲線 可以調週期和賦值等引數
開始腦子暈了 總是搞不清楚關係 後來看了答案 發現答案的思路很清晰 自己又靜下心來分析了一下正弦函式的表示式修改一下自己的** 也實現了功能 不過曲線上個抖動比較大。
計算公式:
一次取樣的時間 busytime+idletime=常數 單位毫秒
忙的時間占得百分比就是正弦函式計算的結果:
busytime/(busytime+idletime)=middle+amplitude*sin(x)
每一次的x值與週期有關
x=n*(busytime+idletime)/1000t 週期單位是秒 n每迴圈一次加1
**:
#include#include書上**結果:#include
#include
#define mine 1
#define answer 0
#if mine
void
main()
}#endif
#if answer
const
int sampling_count=200; //
抽樣點數量
const
double pi=3.1415926535
;const
int total_amplitude=300; //
每個抽樣點對應的時間片
intmain()
int starttime=0
;
for(int j=0;;j=(j+1)%sampling_count)
return0;
}#endif
自己寫得**結果:
抖動很大 而且oncetime變小後抖動更大了 在oncetime很小的時候 busytime/oncetime=0.5 時曲線都會飽和截至,不知道原因。
注:所有的圖都是第乙個cpu的結果有效。
程式設計之美 CPU佔用率
寫乙個程式,讓使用者決定windows任務管理器的cpu佔用率。1.50 cpu佔用率。2.任意比例。3.正弦曲線。假設cpu是2.4ghz 2.4 10的9次方個時鐘週期每秒 cpu執行的是機器指令,最接近機器指令的語言是組合語言,如下空迴圈翻譯成5條彙編 2 400 000 000 2 5 96...
《程式設計之美》之一 我們也玩玩CPU
昨天拿到 程式設計之美 了。首先宣告不是拿這本書來準備ms的面試的 我沒有接到他家的通知,連電面都沒有。這本書被傳得很 神 我純粹拿他來擴大知識面。看目錄部分有很多關於演算法和資料結構的,我大多見過,不過希望做著沒能提供一些 新鮮妙絕 的解法和講解。現在看了1.1,操縱cpu部分,這個我從來沒接觸過...
程式設計之美 1 1 Windows控制CPU占有率
1.1 讓cpu占有率聽你指揮 題目 windows環境下,寫乙個程式控制cpu占有率,具體 cpu的占有率固定在50 為一條直線。cpu占有率為一條直線,具體引數可調。cpu占有率呈一條正弦曲線。解題思路 任務監控器下cpu占有率是1秒進行一次取樣的。讓cpu工作指定時間,休息指定時間就可以控制占...