計算をする前にif文で否かどうかといのは判定した方がいいですかね?
例えば敵の当たり判定なんかありますよね?
別にif文なんかつけなくても表示されてなければ処理に影響はないわけですが
if文をつかって「敵が描画されている時だけ当たり判定の計算を行う」といった処理にした方が
処理速度は向上しますか?
if文の処理速度
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: if文の処理速度
何故存在しない敵とのあたり判定を行っているんですか?
また、「あたった」と判定した時に、敵が非表示なら処理に影響しないということは、一連の処理の中でif文が使われているものと思います。
あたり判定を行う前にif文を持ってくれば計算量は減ると思います。
どれくらいの計算量か、どういう計算式かはわかりませんが、2Dだと仮定して、
math関数を多用しない限り、また、あまりに弾が膨大な数ではない限り、あたり判定がボトルネックになることは少ないです。
処理速度向上を狙うなら描画周りを改善した方がよいでしょう。
但し、なるべく計算量を少なくしようとするのがプログラマーの求めるところでありましょう。
不要な計算はするべきではないです。
また、何がどれ位ボトルネックになっているのかをはっきりさせたい時は自分で処理時間を測定してみると良いと思いますよ。
また、「あたった」と判定した時に、敵が非表示なら処理に影響しないということは、一連の処理の中でif文が使われているものと思います。
あたり判定を行う前にif文を持ってくれば計算量は減ると思います。
どれくらいの計算量か、どういう計算式かはわかりませんが、2Dだと仮定して、
math関数を多用しない限り、また、あまりに弾が膨大な数ではない限り、あたり判定がボトルネックになることは少ないです。
処理速度向上を狙うなら描画周りを改善した方がよいでしょう。
但し、なるべく計算量を少なくしようとするのがプログラマーの求めるところでありましょう。
不要な計算はするべきではないです。
また、何がどれ位ボトルネックになっているのかをはっきりさせたい時は自分で処理時間を測定してみると良いと思いますよ。
Re: if文の処理速度
リンクリストあたりを使って管理すれば、そもそも存在しない敵に処理が回ってくること自体が無くなりますけどね。
むかしは存在しない敵の座標に絶対値の大きい負の数を入れて当たり判定を回避するテクを使うことがありました。
そういう手を使っているならいくつかのif文を省くことができると思います。
メモリ使用量を若干削れるメリットはありますが処理速度は無視できるくらいの違いでしょう。
配列を使っていてゴミデータが残っていたら表示されていなくても処理に影響あるのでは?yk さんが書きました:別にif文なんかつけなくても表示されてなければ処理に影響はないわけですが
むかしは存在しない敵の座標に絶対値の大きい負の数を入れて当たり判定を回避するテクを使うことがありました。
そういう手を使っているならいくつかのif文を省くことができると思います。
メモリ使用量を若干削れるメリットはありますが処理速度は無視できるくらいの違いでしょう。