提高CPU占用率

需要實(shí)現(xiàn)提高CPU占用率的功能也糊,用來(lái)做一個(gè)壓力測(cè)試葫盼。

但是找了一下午發(fā)現(xiàn)沒(méi)有相關(guān)工具,只有monkey這種測(cè)試穩(wěn)定性的測(cè)試工具叠艳,以及內(nèi)存壓力測(cè)試工具。有關(guān)CPU的測(cè)試工具只能顯示CPU的占用率易阳。但是現(xiàn)實(shí)CPU占用率的話附较,Android Studio本身就帶有顯示功能。

后面發(fā)現(xiàn)一種思路潦俺,就是把一些耗時(shí)的代碼寫進(jìn)app里面去拒课,從而達(dá)到提升CPU占用率的目的。

首先我想新建一個(gè)線程事示,使用sleep達(dá)到占用CPU的目的早像,但是這樣程序會(huì)崩潰,雖然提升了CPU的占用率但是內(nèi)存溢出了(猜測(cè)可能是因?yàn)閟leep時(shí)間太長(zhǎng))肖爵。

然后扎酷,我在線程內(nèi)寫了在for循環(huán)中對(duì)float進(jìn)行運(yùn)算操作,從而增加CPU的占用率遏匆。但是占用率不高法挨。后面想到更新UI是較為耗時(shí)的操作谁榜,因此,在界面增加了2個(gè)TextView控件凡纳,新建兩個(gè)Handler窃植,在循環(huán)內(nèi)對(duì)其控制更新。然后就基本穩(wěn)定在CPU百分之40左右的占用率荐糜。

最后具體使用就在實(shí)際APP中添加一個(gè)Button控件巷怜,點(diǎn)擊即開(kāi)啟線程,從而提高CPU占用率暴氏。

后面實(shí)際使用的時(shí)候發(fā)現(xiàn)了問(wèn)題延塑,加入到app中會(huì)崩掉,卡死答渔。于是又改變了思路关带,刪掉了更新UI的代碼。新的代碼在末尾沼撕。之前的代碼還是寫的太復(fù)雜了宋雏。新的代碼比較簡(jiǎn)潔。主要是用到了一個(gè)while來(lái)實(shí)現(xiàn)增加CPU占用率务豺。


MainActivity文件如下:

packagecom.demo.sleep;

importandroid.os.Handler;

importandroid.os.Message;

importandroid.support.v7.app.AppCompatActivity;

importandroid.os.Bundle;

importandroid.util.Log;

importandroid.widget.TextView;

public classMainActivityextendsAppCompatActivity {

private static finalStringTAG="MainActivity";

privateTextViewmTextView;

privateTextViewmText;

privateHandlermHandler;

privateHandlermTextHandler;

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mTextView= (TextView)findViewById(R.id.text_view);

mText= (TextView)findViewById(R.id.text_id);

mHandler=newHandler(){

@Override

public voidhandleMessage(Message msg){

String s = (String) msg.obj;

mTextView.setText(s);

}

};

mTextHandler=newHandler(){

@Override

public voidhandleMessage(Message msg){

String s = (String) msg.obj;

mText.setText(s);

}

};

newThread(newRunnable() {

@Override

public voidrun() {

for(inti =0; i<10000;i++) {

floatsum =2.1f;

for(intj =0;j<1000;j++){

floatb =2.5f;

floatc =3.0f;

doubled = (double) (b*c +b-c);

doublef = (double) (b*b*b+c*c-b-c);

for(intaddnum? =0;addnum <3000;addnum++) {

String s = addnum+"";

Message msg =newMessage();

msg.obj= s;

mHandler.sendMessage(msg);

}

for(intaddnum? =0;addnum <3000;addnum++) {

String s = addnum+"";

Message msg =newMessage();

msg.obj= s;

mTextHandler.sendMessage(msg);

}

Log.d(TAG,"d is"+d);

newThread(newRunnable() {

@Override

public voidrun() {

try{

Thread.sleep(1000);

}catch(InterruptedException e){

e.printStackTrace();

}

}

}).start();

sum = sum* b;

sum = sum *c;

sum = sum/b;

for(intaddnum? =0;addnum <3000;addnum++) {

String s = addnum+"";

Message msg =newMessage();

msg.obj= s;

mHandler.sendMessage(msg);

}

for(intaddnum? =0;addnum <3000;addnum++) {

String s = addnum+"";

Message msg =newMessage();

msg.obj= s;

mTextHandler.sendMessage(msg);

}

Log.d(TAG,"sum is "+sum);

newThread(newRunnable() {

@Override

public voidrun() {

try{

for(intaddnum? =0;addnum <3000;addnum++) {

String s = addnum+"";

Message msg =newMessage();

msg.obj= s;

mTextHandler.sendMessage(msg);

}

Thread.sleep(1000);

}catch(InterruptedException e){

e.printStackTrace();

}

}

}).start();

for(intk =0; k<1000;k++){

floate =2.0f;

floatl =3.0f;

l = (float) (e*f/sum+l-e);

String s = k+"";

Message msg =newMessage();

msg.obj= s;

mHandler.sendMessage(msg);

sum = sum/e;

String s1 = k+"";

Message msg1 =newMessage();

msg.obj= s1;

mTextHandler.sendMessage(msg1);

}

for(intq =0; q<1000;q++){

floatw =2.0f;

floatt =3.0f;

floatr = (float) (w*f/sum);

sum =? sum+t/w +r +r*w +t*w;

newThread(newRunnable() {

@Override

public voidrun() {

try{

Thread.sleep(1000);

}catch(InterruptedException e){

e.printStackTrace();

}

}

}).start();

}

newThread(newRunnable() {

@Override

public voidrun() {

try{

Thread.sleep(1000);

}catch(InterruptedException e){

e.printStackTrace();

}

}

}).start();

}

}

}

}).start();

}

}


xml文件如下:

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.demo.sleep.MainActivity">

android:id="@+id/text_view"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello World!"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"/>

android:id="@+id/text_id"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello World!"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"/>





public classMainActivityextendsAppCompatActivity {

private Button mCPUButton;

private boolean bTestThread=true;

private boolean bFlag=true;

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mCPUButton= (Button)findViewById(R.id.cup_button);

mCPUButton.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View view) {

if(bFlag){

bFlag=false;

mCPUButton.setText("停止");

for(inti =0; i<100; i++)

cpuTest();

}else{

bFlag=true;

mCPUButton.setText("增加CPU壓力");

bTestThread=false;

}

}

});

}

private voidcpuTest(){

newThread(newRunnable() {

public voidrun(){

while(bTestThread)

{

}

}

}).start();

}

}




參考鏈接

http://www.voidcn.com/article/p-bpnqjlyi-ck.html

http://blog.csdn.net/xiaobai20131118/article/details/50698448

http://www.itwendao.com/article/detail/343816.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末磨总,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子笼沥,更是在濱河造成了極大的恐慌蚪燕,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奔浅,死亡現(xiàn)場(chǎng)離奇詭異馆纳,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)乘凸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門厕诡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人营勤,你說(shuō)我怎么就攤上這事灵嫌。” “怎么了葛作?”我有些...
    開(kāi)封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵寿羞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我赂蠢,道長(zhǎng)绪穆,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮玖院,結(jié)果婚禮上菠红,老公的妹妹穿的比我還像新娘。我一直安慰自己难菌,他們只是感情好试溯,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著郊酒,像睡著了一般遇绞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上燎窘,一...
    開(kāi)封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天摹闽,我揣著相機(jī)與錄音,去河邊找鬼褐健。 笑死付鹿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的铝量。 我是一名探鬼主播倘屹,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼银亲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼慢叨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起务蝠,我...
    開(kāi)封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拍谐,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后馏段,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轩拨,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年院喜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亡蓉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡喷舀,死狀恐怖砍濒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情硫麻,我是刑警寧澤爸邢,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站拿愧,受9級(jí)特大地震影響杠河,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一券敌、第九天 我趴在偏房一處隱蔽的房頂上張望唾戚。 院中可真熱鬧,春花似錦待诅、人聲如沸颈走。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)立由。三九已至,卻和暖如春序厉,著一層夾襖步出監(jiān)牢的瞬間锐膜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工弛房, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留道盏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓文捶,卻偏偏與公主長(zhǎng)得像荷逞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粹排,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容