0
0

マルチスレッドにすると処理速度が遅くなってしまうパターン

Posted at

マルチスレッドにすると処理速度が遅くなってしまうパターン

  • メモリ使用量が多い
  • 処理が重い
  • 待ち合わせが発生する
  • 外部(DBやファイルなど)から情報を取りに行く

例)

IMG_0044.jpeg
A:60%のメモリを使う
B:80%のメモリを使う
A、Bともに結構メモリを使う

これをマルチスレッドにすると。。。

メモリ使用量が多い

  • 処理Aをするためには、メモリに処理Aで使うための情報を持っておく必要がある
    →メモリを60%使う
  • 処理Bを行うためには、メモリに処理Bで使うための情報を持っておく必要がある
    →メモリを80%使う
  • これらをマルチスレッドにしてしまうとメモリが足りない!!


じゃあどうする。。。?
メモリに書き込みができないので、

  • 外部のメモリ(HDとか)とかに書き出す
  • 不要になったメモリは消す
  • 外部にメモリを見に行く
    とかの余分な作業が発生してしまい遅くなってしまう

待ち合わせが発生する

  • AとBの処理で、1つしかないシステムを使う場合、待ち時間が発生してしまう
    (素直に1個ずつ処理をした方が待ち時間が発生せずに早く処理が終わる)
  • マルチタスクにするには、AとB両方の情報をメモリに持っておく必要がある
    そのため、メモリが足りないと、余計に遅延する!!

※メモリとか、CPUのコア数が潤沢ならマルチスレッドの方が早い
しかし、古のコア数1とかのPCや、メモリ容量が少ないPだと並列処理の方が直列処理よりも遅くなってしまうことがある
 (今のCPU8コアとかなら、8スレッドくらいならいける)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0