經典面試題 — 讓CPU佔用率聽你指揮

來源:互聯網
上載者:User

在《編程之美》上有這麼一道題,題目是:編程讓CPU的佔用率呈正弦曲線變化。 初看這題基本沒什麼思路,後來瞭解到CPU佔用率的計算公式就找到突破口了。

 

CPU佔用率計算公式:

CPU佔用率 = 已耗用時間/總時間 x 100%

 

有了上面的公式,只需要讓一個時間片內啟動並執行時間占該時間片的比例呈正弦變化即可。

 

 //正弦曲線的
 double time = 0.0 ;
 double runtime ;
 int c;
 while(1)
 {
  runtime = 100 + 100 * sin(time);
  time += 0.05 ;
  c = clock();

  while(clock() - c < runtime );

  Sleep(200 - runtime );
 }

 

 //橫線的 
 while(1)
 {
  int start = clock();
  while(clock() - start < 10 );
  Sleep(10);

 }

 

 //單向斜線的
 int k = -1;
 int c = 0;
 int runtime ;
 while(1)
 {
  runtime = 100 + k * ( c++ % 101 ) ;

  int start = clock();
  while(clock() - start < runtime );
  Sleep(100 - runtime );
 }

 

//雙向斜線的

 int k = 1 ;
 int c = 0;
 int runtime ;
 while(1)
 {
  runtime =  (int)(c<100) * ( 100 + -1 * ( c % 100 )) + (int)(c>100) * (c-100);
  c = c++ % 200 ;
  int start = clock();
  while(clock() - start < runtime);

  Sleep(100 - runtime );
 }

 

正弦曲線的效果

 

單向斜線的效果

 

雙向斜線的效果

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.