提高软件CPU占用率
案例:
獨(dú)立線程以5ms一包的速率接收指令(一共大概70-80種指令類型),并放入一個(gè)隊(duì)列A
主線程中,根據(jù)定時(shí)器去隊(duì)列A中取數(shù)據(jù),并解析/計(jì)算/顯示(速率:200包/秒)
現(xiàn)象:按理說這個(gè)收/發(fā)的頻率是能保持平衡的,也就是收多少就處理多少,延遲會很小(可能就是一個(gè)指令的傳輸時(shí)間),但是實(shí)際現(xiàn)象是,隨著時(shí)間的推移,隊(duì)列A越來越大。
發(fā)現(xiàn):調(diào)試的時(shí)候發(fā)現(xiàn)是處理數(shù)據(jù)的時(shí)候,判斷數(shù)據(jù)包類型,并進(jìn)行解析模塊比較費(fèi)時(shí)間(注釋掉這塊內(nèi)容就不存在延遲了)。因此排除了代碼本身的問題;
代碼沒問題,那就只能從設(shè)備方下手
解決方案:提高軟件的優(yōu)先級,讓CPU優(yōu)先處理我這個(gè)軟件的計(jì)算處理
//REALTIME_PRIORITY_CLASS 實(shí)時(shí)//HIGH_PRIORITY_CLASS 高//ABOVE_NORMAL_PRIORITY_CLASS 高于正常//NORMAL_PRIORITY_CLASS 正常//BELOW_NORMAL_PRIORITY_CLASS 低于正常//IDLE_PRIORITY_CLASS 空閑GetCurrentProcess():當(dāng)前軟件進(jìn)程int main(int argc, char *argv[]) {SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS ); }查看進(jìn)程的當(dāng)前CPU優(yōu)先級:
任務(wù)管理器-鼠標(biāo)右鍵(軟件進(jìn)程)-轉(zhuǎn)到詳細(xì)詳細(xì)-鼠標(biāo)右鍵(軟件進(jìn)程)-設(shè)置進(jìn)程優(yōu)先級
?然后,你啟動(dòng)軟件的時(shí)候就會發(fā)現(xiàn),應(yīng)用程序優(yōu)先級,由默認(rèn)的正常,改成了你需要的!
總結(jié)
以上是生活随笔為你收集整理的提高软件CPU占用率的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【设计】宽范围输入线性稳压器
- 下一篇: 微博数据爬虫——获取用户基本信息(三)