プロが教えるわが家の防犯対策術!

Core2などのマルチコアCPU(MPU)の性能を最大限に活用するアプリを開発するには、特別な手法あるいは開発環境が必要なのでしょうか?
現在、VisualStudio6で開発を行っているのですが、同じexeをPentium4とCore2で実行しても、処理スピードにあまり違いが感じられません。

あるいは、CPUへの割り振りはOS(Windows)が行うので、アプリ開発の際は気にする必要はないのでしょうか?

よろしくお願いします。

A 回答 (3件)

同時並行処理可能な仕事でなければ、マルチコアにしてもその効果は得られません。



仮に、1,2,3,4という仕事があったとします。
これらの仕事が、1 - 2 - 3 - 4 のように、前の仕事が完了しないと、開始できないようなものである場合、シングルでも、マルチでも、処理時間に変わりはありません。
しかし、1 の仕事が完了すれば、2、3、4 の仕事はいつでも開始できる状態になるようなものであれば、
      2 -
 1 - 3 -
      4 -
のように並行処理が可能になるので、マルチの恩恵を受けることができます。
    • good
    • 0
この回答へのお礼

お礼が大変遅くなり、失礼致しました。
勉強にないました。
有難う御座いました。

お礼日時:2008/06/20 23:38

ざっくり言えばマルチスレッドで記述できるような問題なら各スレッドを複数のコアで実行できる可能性があります。


(もちろん複数のスレッドが意味あるように書けていないとダメですけど。)

あと、コンパイラによっては繰り返しなどの処理を自動的に並行実行できるコードに変換したりすることがありますが、VS6ではそんなことはしてくれないと思います。

ですから、
for (sum=0, i=0; i < 10000; i++) sum += i;
みたいなコードを書いても(全ての足し算はシーケンシャルに実行されるので)一つのコアしか使われません。
しかし、複数(例えば二つ)のスレッドを作って各スレッドがこのループを実行するようにコーディングすれば、違いを実感できるかもしれません。(論理スレッドが実コアに割り当たるかどうかは保証の限りでないので、実感できるかどうかは状況次第です。そういう意味で、割り振りはOSがやるので気にする必要はありません。)
    • good
    • 0
この回答へのお礼

お礼が大変遅くなり、失礼致しました。
勉強にないました。
有難う御座いました。

お礼日時:2008/06/20 23:38

>CPUへの割り振りはOS(Windows)が行うので、


>アプリ開発の際は気にする必要はないのでしょうか

普通はそうなります。
こんな部分の制御までプログラマが気にしていては生産性が上がりません。

>特別な手法あるいは開発環境が必要なのでしょうか

当然あります。といってもOSは究極にいえば自作になりますが・・・
OSの担当する部分を自分達でコードして、
その分のオーバーヘッドをカットすれば、かなり高速になります。

また、ソフトの部分をハードに置き換えればかなり高速になります。
グラフィックボードにみられるように、ファームウェアで組むこともありましょう。
このような開発言語はアセンブラをおいて他にないでしょう。

結局、特殊用途というのは相手の構成を決め打ちして強制させる部分もあります。
そうした前提があってプログラムも有効になります。

VBみたいな汎用の言語を使って汎用のOSに依存する形だと限定的にならざるを得ません。
それでも言語の方で最新のアーキテクチャをサポートしているかどうかは大切ですから、
こういった方面を重視するのであれば言語のバージョンもなるべく最新のものを用意します。
こういった観点からするとVB6は時代遅れという感は否めません。
    • good
    • 0
この回答へのお礼

お礼が大変遅くなり、失礼致しました。
勉強にないました。
有難う御座いました。

お礼日時:2008/06/20 23:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!