tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: VB6で製作した計算用アプリを複数起動したときの挙動
投稿日: 2024/06/24(Mon) 13:56
投稿者魔界の仮面弁士
> たくさんの画像を手分けして処理するために、スレッド数が多い性能の高いパソコンで、アプリを複数立ち上げて処理をした場合、

EXE を複数起動するということですね?(複数プロセスの起動)


> 1つのアプリで処理するよりもスレッド数の多いCPUを積んだPCの恩恵を得られるものなのでしょうか?
実際に試さないと確かなことは言えませんが、幾らかの恩恵は受けられると思います。

しかし、それがコストパフォーマンスに見合うかどうかは、
各種条件に左右されますので、どの程度変わるのかを具体的にするには、
実際に測定しないと見えてこない話です。


ということで、無責任な物言いになってしまいますが
『各種前提条件が明確でない以上、やってみなければ分からない』
という回答になります。


> Core i7-8565U
2018年後半にリリースされた、
物理コア数 4、スレッド総数 8 のプロセッサですね。

現状の環境でパフォーマンス モニタを仕掛けて、実際に
複数の EXE を起動して測定してみた場合、
それぞれの論理プロセッサごとの負荷率はどうでしたか?
EXE を幾つ起動した時が最速でしたか?

EXE が 1 つでも 3 つでも大差無かったのであれば、
CPU の論理スレッド数を増やしても効果は薄いと想像します。


プロセッサそのものの処理速度を重視した方が良いのか、
プロセッサのコア数を重視した方が良いのか、
プログラムそのものを見直すべきなのかは、
実際に「計測」しなければ見えてきません。

たとえば
 「大量の画像をディスクから読み取る時間」
 「複数の画像をメモリにロードする時間」
が、画像処理本体部以上にボトルネックになっている場合は、
ストレージの高速化やメモリの増強の方が効果が高いかもしれません。


そうした足回りが、さほどボトルネックにならないという前提条件であれば、
マルチプロセス処理にすることで、コア数の多い CPU とすることで、
並列処理の効率はある程度得られるかと思います。


あるいはたとえば、画像一つ一つに対して起動と終了を繰り返すような
実装になっていた場合、プロセスの起動と終了のコストが高くつくため、
効率が悪くなる可能性もあるでしょう。

1 画像ごとに EXE を起動するよりは、起動されたそれぞれのプロセスが
複数の画像を順次処理する形にした方が効率的には良いわけですが、
かといって並行処理のためにプロセス間で処理状況を確認しあうような
実装にしてしまうと、今度はプロセス間のやり取りが隘路になりかねません。

(かといって VB6 だと、シングルプロセスでマルチスレッド処理を実装するのも困難…)


いずれにせよ、「どこが遅くなる要因で、どこを見直せば早くなるのか」を
見極めてから検討した方が良いと思いますよ。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。