人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

パソコンで、複数のプログラムを走らせたいとき、逐次的にプログラムを実行せた方場合と、一度にすべてのプログラムを実行させた場合で、全プログラムの終了時間に違いはあるのでしょうか。ただし、全プログラムを一度に走らせたとしても、メモリーを100%使うことはありません(メモリーは十分にあります)


いま、複数(といっても16個ですが)の重い計算をさせようとしていて、できるだけ早く終わらせるにはどうしたらいいんだろうと思いました。

●質問者: birdythemighty
●カテゴリ:コンピュータ
✍キーワード:パソコン プログラム メモリ 計算
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● maamaamaa
●18ポイント

全プログラムを一度のできるかは、CPU使用率が問題になりますが、基本的には逐次実行より並列実行の方がトータル時間は短くなります。

◎質問者からの返答

並列実行の方が早いのですね。

もしよろしかったら、その理屈を教えていただけないでしょうか?

まあ、逐次実行の方が早い場合は、どういう場合でしょうか??


2 ● J_is_James
●6ポイント

昔に似たような実験をしたことがあります。

当時はWin2000でしたが、、、

その際には、同時に処理させた方が早かったです。

今のマシンと環境が違うので一概に言えませんが、

10種類のプログラムでは、そのような結果でした。

ダミーhttp://www.msn.co.jp/home.armx


3 ● makeworld
●17ポイント

ITmedia エンタープライズ:マルチタスク――プロセススケジューリング(その1)

タスク切り替えは、比較的重い操作になりますので、逐次実行の方が速いと思います。

URLはLinuxの説明ですが、Windowsでもタスク切り替え時にレジスタ退避などが同様に行われます。

◎質問者からの返答

並列処理にしてしまうと、タスクの切り替え処理という、余計な処理がでてしまうのですね。

納得です。


4 ● sepiamoon
●17ポイント

結論から言うと、非常に特殊な場合を除き、

並列実行の方が逐次実行より早くなります。

非常に単純化した例で説明すると、

時間を浪費するのが、大きく、

a.CPUで計算する。

b.ディスクにアクセスする。

の2つあると考えた時、

プログラムY:

CPUでの計算 1秒

ディスクへのアクセス 1秒

プログラムZ:

CPUでの計算 1秒

ディスクへのアクセス 1秒

の2つのプログラムを並列で走らせると、

プログラムYがCPUを使っている時、

プログラムZがディスクアクセスを行うといった感じで、

トータルは、4秒より少なくなります。

(CPU計算とディスクアクセスが同時に行える)

一方で、逐次的に走らせると、

必ず4秒かかります。

ただし、YとZ双方ともに、

CPUのみ浪費するようなプログラムの場合は、

並列実行の効果が少なく、

トータルは同じような時間となります。

このような単純化した回答でどうでしょうか?

◎質問者からの返答

あ、ディスクアクセスも関係してきますね。ますます納得です。ありがとうございました。


5 ● zufall
●17ポイント

CPUがシングルコアの場合は、並列処理はやらないほうがいいでしょう。マルチコアの場合は並列で処理してもいいと思います。

並列処理をする場合、プロセスの切り替えのときにレジスタの退避などをしなければなく、負担がかかります。

シングルコアの場合はやらないほうがいいでしょう。

◎質問者からの返答

マルチコアの場合でもCPUによっては、レジスタ回避は起こりうるのではないでしょうか?マルチコアなら、コア毎にレジスタがあるものなのでしょうか?レジスタはCPUの一部な気もするので、それでOKなような気もします。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ