0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マルチタスクをやってみた

0
Posted at

マルチコアを生かす

趣味で色々と計算したりしているのですが、先日もリーマン予想に出て来る「非自明な零点」ってどんなのと思って計算してみました

計算式は割愛しますが、実数0.5のときの虚数をひたすら計算していきます
はじめはVisualBasicでプログラムを作って動かしていたんですが、CPUの使用率も低く、結果が出る(目的としている値)までに相当時間が掛かってしまいました

VisualCなら早い?

というわけで、今度はVisualCでプログラムを書き直して時間を測定してみました

結果は…
VisualBasicで2分50秒掛かった計算が、1分50秒でした
級数用のループや複素数の三角関数を使った計算ですが、65パーセントの時間で計算できました!
しかし、CPUの使用率は低いままです

Core i7で動かす

計算したパソコンはCore2Duoという古いタイプのCPUです
第二世代のCore i7のパソコンも持っているので、出来ればCPUのパワーを実感したいものです
先ほどと同じプログラムを走らせてみましたが、1割ほど早くなっただけでした…
プログラム自体がシングルタスクなことが原因のようで(VisualBasicはシングルタスクしか作れない?)CPUの使用率も、1個のみフルに動いている感じです

マルチスレッド化

Core i7といえど、プログラムによつてはCore2Duoとあんまり変わりません…
VisualCには、_beginthreadという関数があり、簡単にマルチスレッドのプログラムが作れます
また、非自明な零点の計算は、前後の計算に左右されずに求めることができるので、単純にループを8分割して、8スレッドにしました!

結果は

およそ20秒で処理が終わりました
VisualCのシングルスレッドが1分50秒だったので、20パーセントぐらいで計算できたことになります(VB比では10パーセントちょい)

cpu.png

実行したとたん、ファンがすごい勢いで回転しますし、あんまり長時間の処理には不安がありますね

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?