ο
staticにしとくと変数を確保する手間が省けて関数が速くなるってのは、
時と場合によりけりでしょう。
レジスタに納まりきらない自動変数はスタックに積まれので、
SP相対アドレシングになる。このため
レジスタの数が極端に少ない、かつSP相対でペナルティがつくようなCPU
(で、こういうのは昔のCPUに多い)では
直アドレスでアクセスできるstatic変数の方が速くなる。
最近の、ちゃんとパイプラインが通っていてキャッシュもあるCPUでは、オフセット計算するために1クロック待たされることなんてないし、
アドレスを32bitで記述するよりもSP相対のオフセットを16bitで書いたほうが
インストラクションが短くなるので、static変数よりもauto変数へのアクセスの方が速いことが多いんじゃないか?
ο
とはいえコンパイラやアセンブラやリンカによってはstatic変数は
PC相対の位置に取られることもあって、その場合はオフセットは16bitなので、
レジスタから溢れたauto変数と同じ扱いになり速度は変わらない。
ただしPC相対の位置にstatic変数が取られるのはコードがRAM上にある場合だけで、
ROMにコードを配置する場合はどうしても絶対位置に取られてしまうはず。
ο
どっちにしろ条件をいろいろ考慮することなくstaticの方が速いとか言ってるのは、
昔言われてたことを鵜呑みにしてるだけだから無視していいんじゃないっすかね?
そんなことよりauto変数使いすぎてスタック溢れることをまず心配すべきだ。
ο
ボクは技術的には入社してから殆ど成長していないのでひらしょーさんの成長ぶりがうらやましい。
ο
スプライトの概念が必要なのはスプライトがハードウェアで実装されているときだけ
にしたほうがいいんじゃないか?
イメージのBitBltを繰り返せばできることに対してわざわざスプライトという概念を
くっつけるなんてのは
「スプライトがある→ゲームが作れそう」
なんて短絡な思考をしてる連中を騙す目的でしかありえないと思う。
J-PhoneやDoCoMoのスプライトAPIなんかを見てると吐き気がするね。
ο
今日大学の研究室のこと別の部署の後輩と話してたんだが…
後輩「北大はそんなに怪しくなかったですよ」
オレ「北大っていうとシステム情報工学専攻とか?」
後輩「あ、そこオレが居たところっす」
後輩「隣の研究室が超あやしかったんすよ。
そっち(オレの部署)に配属されたK君がいたところなんですけどよ」
オレ「となりは、なに?」
後輩「知能っていう人工知能とかやってたところなんすけどね。
先輩とかすごい変な人とかいっぱいいましたよ」
ο
てか、ウチの後輩は北大知能出身なのかよ…知らなかったよ。