程式設計之美 CPU

2022-05-18 11:51:20 字數 1754 閱讀 4141

今天開始看程式設計之美 。第乙個問題是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工作指定時間,休息指定時間就可以控制占...