• ベストアンサー

CPU稼働率を上げるには?

C言語にてプログラムを組み,計算をさせているのですが,計算が複雑で時間が数時間かかってしまいます. しかし,CPU稼働率を見ると,50%程度です.100%近くまで稼働率があがると,その分,計算時間も短縮されるのではないかと思うのですが,100%まであげるにはどうすればよいのか分からず,教えていただきたく思います. なお,動作環境は,WindowsXPです.よろしくお願いします.

質問者が選んだベストアンサー

  • ベストアンサー
  • terra5
  • ベストアンサー率34% (574/1662)
回答No.2

1cpuなら単純なループしただけで100%使えます。 ex) for(i=0;i<10000;i++)for(j=0;j<10000;j++){int k=i+j;} 100%にならないなら、なんらかの待ちの処理を行う関数、API等を内部で呼び出しているか、 複数のCPUのマシンであるか、HTが有効になっているマシンと思われます。 50%であるなら、2CPUかHTであろうと思います。 前者であれば、マルチスレッドにして計算部分と待ちを含む部分(表示、UI等)を分離し、計算スレッドでは計算以外は極力何もしない、 後者であれば計算を複数プロセス、スレッドで並行動作できるような構造にして計算を行うとなると思います。 プライオリティの制御はCPUアイドル時間が多い状況ではほとんど効果がないと思います。

kaiko2004
質問者

お礼

ご察しのとおり,CPUが複数でした.参考になりました.ありがとうございます.

その他の回答 (2)

noname#14464
noname#14464
回答No.3

> 他のプロセスは使ってないのですが  Windowsが起動しています。Windowsだけでも確か、十数個のプロセスが起動することになるのではないでしょうか?(ユーザー管理、タスク管理、シェル、Idle管理等々)シェルとその他不要なサービスはそれぞれの方法でシャットダウンさせることは出来ますが、ユーザー関係は確か、シャットダウンさせることが出来なかったと思います。 > ちなみにfortranの場合はどうでしょうか?  fortranを動かしているプロセスの優先度を上げます。CreateProcess APIの引数で指定できますね。

参考URL:
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createprocess.htm
kaiko2004
質問者

お礼

お忙しい中,回答していただきましてありがとうございました.

noname#14464
noname#14464
回答No.1

 計算処理を行うプロセスの優先度を上げることで、CPUに時間を割り当ててもらえる量が増え、結果CPU占有時間が上がります。  ただし、システムプロセスは"高(HIGH_PRIORITY_CLASS)"に設定されているので、"リアルタイム(REALTIME_PRIORITY_CLASS)"に設定すると危険です(システムが動かなくなる場合があります)。 "やや高い(ABOVE_NORMAL_PRIORITY_CLASS)"がちょうど良いでしょう(それでも構わないというのならば、"高"以上でも構いません)。  それよりも、あまりに時間のかかる計算でしたら、分散コンピューティングやアルゴリズムの見直しなど、別の方法を検討すべきかもしれません。 優先度を上げたところで、せいぜい2分かかる処理が1分30秒に短縮できる程度ですので…。

参考URL:
http://www.google.com/search?q=SetPriorityClass
kaiko2004
質問者

お礼

お忙しい中,回答していただきましてありがとうございました.

kaiko2004
質問者

補足

回答ありがとうございました.他のプロセスは使ってないのですが,cpu使用率を上げるにはどうしたらいいのでしょうか?ちなみにfortranの場合はどうでしょうか?

関連するQ&A

  • CPUの稼働率を上げるには

    Windows7で、 Intel社core i7(ターボブースト時4-core 8-thread)のCPUを使っているのですが、 ガジェットでCPUメーターというのを表示させてても、メモリの方は結構頻繁に上下したりして、稼働しているなというのを感じるのですが、 CPUの方は、殆どの場合4%とか、多くなっても8%とかくらいしか稼働しておりません。 いろいろ複雑な処理だろうな、というのを想定してソフトウェアを起動させたり動画を見ても殆ど上がらず、 結構良いCPUを買ったつもりが役不足というか何というか、ここまでの物は必要無かったのかとガッカリしています。 しかも、以前使ってたCore 2 Duoと、同じ処理をしてもそんなに時間の変化等無いように思います。 (マザーボードなども一緒に変えました) ただ一つPainter12というソフトは、CPUの割り当てのようなものが設定できるので、それを起動させるとFANの回転も滅茶苦茶上がった音がして、メーターも80%くらいになります。 いろいろなソフトで、このPainterみたいにCPUの稼働率を割り当てたり、もっと効率良くCPUを使って作業の短縮を図ったりできますか?

  • CPU使用率を制限したい

    WindowsXP(HomeEdition)上で動作するperlプログラムを作成して実行するとCPU使用率が95-100%程度となりめいいっぱいCPUを消費してしまいます。このプログラムを長時間動作させたい(8hくらい)ので動作マシンからの出火なども心配です。100%の場合、50%程度で動かす場合と違ってperlプログラムの実行時の原因不明の動作不良も起こります。 そこでCPU使用率を50%程度に制限してperlプログラムを動作させたいのですがそのようなことはできますでしょうか。 どうぞよろしくお願いします。

  • プログラム上のCPU稼働率低減に関して

    C++の簡易なプログラムを長時間実行しっぱなしにしたいのですが、 CPUが常に100%の稼働率になってしまうため、PCが熱暴走してしまうのではないかと心配しております。 対策としてはPCの冷却を徹底することも考えられるのですが、 プログラムを工夫して(例えばメモリの使用領域を設定変更する)CPUの負担を軽減することは可能でしょうか? プログラムの内容は[1000][300000]の配列を宣言し、 1秒間に20回、配列の中身を0~1000まで永遠に書き換え、 その内容をグラフィックで示すものです。 メモリの使用量は膨大になることは覚悟していたのですが、 CPUの稼働率が終始100%になってしまうのは、困っております。 対策をご教授いただけると助かります。 もしくは説明不足な点がありましたらお申し付けください。

  • CPUの稼働率が100%UPする

    Windows XPですが、最近になってCPU稼働率が100%超えるようになって冷却ファンがフル回転しています。 稼働率を下げたいですが、どなたか教えてください。 ちなみに、Cドライブ XP 使用率50%です。 Dドライブ VISTA    使用率50%です。 CPUを増設するには・・・・??

  • CPUの稼働率が高い

    富士通FMVAH42/W(ノートPC)を使っています。 何もアプリが稼働していない状態でCPUの稼働率がいつも50%を下回ることがなく、70~85%です。 これは正常でしょうか?OFFCEも以前のPCより動作が遅い気がします。 ※OKWaveより補足:「富士通FMV」についての質問です。

  • CPU稼働率がずっと高い・・・。

    2週間ほど前に、CドライブとDドライブのパーテーションを変更したのと、外付けHDDを装着したころから、 冷却ファンが何もしない状況でも回わりっぱなしだったため、稼働率を見たら何もしていない状態でも常に 40%~70%を行ったり来たりしています。もちろんその間、冷却ファンは最大で回っています。 そのため、全体の動作も非常に遅くなってしまっています。 ちなみにC・Dドライブともに空き容量は8GB以上あり、CPUはペンティアム4の2.8GHzです。 よろしくお願いします。

  • CPUの稼働率が100%になってしまう

    類似の質問があるようですが、解消できなかった為質問させて頂きます。 質問は「CPUの稼働率が100%になってしまう」という事についてです。 まず、PCのスペックですが、 CPU:AMD Athlon64 3500+(Socket939 Cache512k/2.2GHz) M/B:MSI RS480M2-IL ケース:WiNDy ALTIUM X Athlon64 メモリ:1024MB グラフィックボード:玄人志向 GF-GT520-LE1GH GeForce GT52 os:windowsXP home(SP1) PCは、知人が自作したPCをHDD無しで貰い、私がHDDを取り付けた状態です。 状況は、 ・HDDをフォーマット ・OSのインストール ・OSが立ち上がった状態(CPU稼働率5%以下) ・IEを立ち上げる(CPU稼働率95%~100%) この時点で、IEを上下にスクロールさせるのも困難です。 ・windowsXP SP3を無理やりインストール ・再起動し、何もアプリケーションを立ち上げない時点で稼働率常時100%となります。 尚、常駐ソフト(ウイルス対策ソフト)、アプリケーション他、グラフィックボードのドライバすら入れていない状況です。 このような場合はどの様な処置をすれば改善できるのでしょうか?教えて頂きたいと思います。 若しくは、解説ページのリンク等でもかまいません。 その他必要な情報は、自作PC素人の私で調べられる事であれば用意致します。 申し訳ございませんが、宜しくお願い致します。

  • CPU稼働率100%

    ウィンドウズのUP DATEで Windows Genuine Advantage (正規 Windows 推奨プログラム) 通知ツール (KB905474) をダウンロードして以来、ウィンドウズ UP DATE の自動更新に設定するとCPU稼働率100%から下がらなくなりました。 自動更新を無効にした場合のみCPU稼働率が2~8%くらいに落ち着きます。 セキュリティーソフトは フレッツ クリア です。 どの様にすれば症状改善しますでしょうか? 一応、システムの復元を試しましたがだめでした。。 ご回答宜しくお願い致します。 使用機種は SOTEC デスクトップ PV2270S CPU:celeron 2.70GHz HDD:120G メモリ:768MB

  • CPU稼働率100%の症状が出るのですが…

    突然CPU稼働率が100%になってしまい、動作がとても鈍くなり困っています。タスクマネージャで調べてみたところ イメージ名:svchost.exe ユーザ名 :SYSTEM が異常にCPUを使用していることが判明しました。 「タスクの終了」にて稼働率を元に戻すことが出来るのですが、これを終了してしまうと何故かオーディオデバイスが認識されなくなり一切の音が出なくなってしまいます。 オーディオデバイスを再インストールしてみたり、教えて!gooにある回答をいくつか試してみましたが、症状が似ているだけで根本的な部分が違うのか一向に症状が改善しません。 また、常に症状が起きるわけではなく何度か再起動をすることで治るときもあれば、最初から症状が起こらない場合もあります。時折正常に動作しているときでも稼働率が不安定に変動したりもします。 非合法なデータをダウンロードした覚えはありませんが、一応ウィルススキャンもしてみました。ですがウィルスには感染してはいませんでした。

  • 稼働率の求め方を教えて頂けたらと思います

    稼働率の求め方でわかりません ある設備では、1日に合計120分の設備停止が発生しました。 この設備の稼働率を求めなさい 尚、この設備は1日12時間、稼働しています 上の計算の仕方を教えて頂けたらと思います。 よろしくお願いします