【2D】ゲーム作成ツールGameMaker part4【マンセー】
■ このスレッドは過去ログ倉庫に格納されています
0522名前は開発中のものです。
2009/10/23(金) 19:13:04ID:wEq8MK8l他の言語だったら正しいと言いたいところだが、GMLだとifの数を減らすことが必ずしも効率がいいとは言えないかな。
ヘルプ>The Game Maker Language (GML)>GML Language Overview>Expressions から抜粋
Please note that, contrary to certain languages, both arguments to a Boolean operation are always computed, even when the first argument already determines the outcome.
例として、if (false && true && true && a)を使う。
他のプログラミング言語が上のコードを処理するとき、
最初のfalseを見た瞬間に他を見ることをやめる、ということがある。
何故なら、他の変数が何であれ結果はfalseと決まっているから。
だがGMLの場合は他の言語と違って常にチェックされる。
例え、最初のfalseの時点で結果はfalseと決まっているとしてもだ。
(まさに「even when the first argument already determines the outcome」の部分)
従って、
@if (a && b)
Aif (a)
if (b)
の二つを比べた場合、
@の場合は、aもbも常にチェックされるが、
Aの場合は、aを満たさないとき、bのチェックが省かれるため、
Aの方がいい、ということになる。
よりわかりやすくすると、if (a && b && ......)と条件が大量にある場合を想定してみれば、
大量の条件を全てチェックするのと、最初の条件を満たさないときに処理をやめるのと、
どちらが効率がいいかがわかるだろう。
勿論、処理よりも行数の効率を重視したいというのなら話は別だが。
まぁ、効率を考えるレベルのプログラマが処理の効率を捨ててまで行数に拘るとは思えないけど。
■ このスレッドは過去ログ倉庫に格納されています