読者です 読者をやめる 読者になる 読者になる

森理 麟(moririring)のプログラマブログ

ゲームプログラマ森理 麟がのプログラムの話題を中心に書くブログです。

クッキーツイートの高速化 その18 先に入れる #CookieToEat

←個人的には後乗せサクサク派

もう一つポイントとなるのはcontinueとbreakです。

マルチコアの時この2つはどうなるでしょうか。

実はマルチコア専用のStopメソッドとBreakメソッドがあります。

しかし、森理がさわったところこれらは使わない方が良いと思いました。


もちろん使った方がシンプルになるのであれば使うべきです。

ただ、途中で止めるにも非同期に処理しているので、必ず意図したようには止まらないと思います。

それであれば最初から、途中で処理を飛ばしたり、中断したりしない方が良いでしょう。

具体的に言うとループ前にループの中身を精査して、必要な分だけバッファに入れてしまうのです。


つまり、10回ループする時に7回目にbreakするのが分かっていれば、最初から7回だけループさせる。

10回ループさせる時に3回目でcontinueするなら3回目を飛ばしてバッファに入れて9回だけループさせれば良いです。

そう考えるとそもそもcontinueとbreakは不要です。

どちらにしても、進行状況の表示をするためには、事前処理は必要です。


ループを先に数えると余計に回数を回すため遅くなるイメージがありました。

しかし、数えるだけのループなんて軽いものでした。

この事前処理を思いついた時は、個人的にはコロンブスの卵ぐらいビビっときました。

マルチコアに限らず、事前処理を入れた方がパフォーマンスを発揮出来ると思います。