アカウント名:
パスワード:
スタック上の値を書き換えて使うから、遅いし命令が長くなる気が。
楽だから、結構使うけどね。
volatileでも無い限り、スタックから受け取った引数変数であっても、最適化によってレジスタで処理するようになると思う。さらには、変数インクリメントによるループでも、そのループ変数を回数管理以外にはどこにも使ってない場合、デクリメント型のコードを吐き出してくれることもあるぐらい。
そんな最適化を見てしまってからは、ループ変数なんかはもう可読性重視で書くようになりました。
昔は、68000用のgccなんかで、do {…} while (--i != -1);にするとDBRAを吐いてくれる、という泥臭い技があったなぁ。DBRA=「レジスタをデクリメントして、それでボローが立たなかったらジャンプ」する命令。
変数を減らす効用は、タイプ量を減らせることなのです(爆宣言すら面倒くさいので(カウンタを利用して配列を全部なめますよ系のコードですら、後ろから処理することも多々あり。こうなるとコンパイラによる最適化を邪魔する可能性すらあるだろうけど、それによる性能低下を気にするような時代でもないでしょ、ていうか問題になってから書き直せば良いでしょ、てスタンス(死ね>俺
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
変数を減らせる効用 (スコア:0)
// i と size が必要
while(--size)
// size のみでOK
size を破壊可能な場合は非常に多いからね。
現実的には効果より可読性を損なうデメリットの方が大きいけれど、
規模が小さく呼び出し回数の多いルーチンはこれで済ませてしまいがちw
Re:変数を減らせる効用 (スコア:2)
スタック上の値を書き換えて使うから、遅いし命令が長くなる気が。
楽だから、結構使うけどね。
Re:変数を減らせる効用 (スコア:1)
volatileでも無い限り、スタックから受け取った引数変数であっても、最適化によってレジスタで処理するようになると思う。
さらには、変数インクリメントによるループでも、そのループ変数を回数管理以外にはどこにも使ってない場合、デクリメント型のコードを吐き出してくれることもあるぐらい。
そんな最適化を見てしまってからは、ループ変数なんかはもう可読性重視で書くようになりました。
昔は、68000用のgccなんかで、
do {…} while (--i != -1);
にするとDBRAを吐いてくれる、という泥臭い技があったなぁ。
DBRA=「レジスタをデクリメントして、それでボローが立たなかったらジャンプ」する命令。
Re: (スコア:0)
変数を減らす効用は、タイプ量を減らせることなのです(爆
宣言すら面倒くさいので(
カウンタを利用して配列を全部なめますよ系のコードですら、後ろから処理することも多々あり。
こうなるとコンパイラによる最適化を邪魔する可能性すらあるだろうけど、
それによる性能低下を気にするような時代でもないでしょ、ていうか問題になってから書き直せば良いでしょ、てスタンス(死ね>俺