プログラミング疑問「変数のループ内宣言について、パフォーマンスに影響はあるのか?」

きっかけ

スマホゲーム開発で気になったこと

この前、初めてスマホでゲームを作ってみたときに、「ループ内で変数宣言していいのか?」という点が気になりました。

新人の頃は「最初に必要な変数はすべて宣言する」と教えられてきましたが、実際に自分でシステムを組むようになると考え方が変わってきます。ブロック単位でしか使わない変数であれば、その中で宣言した方がコードは分かりやすくなりますし、影響範囲も限定されて安全です。

そのため自分は、ループ処理はサブ化し、その中で変数宣言を行うスタイルを取っていました。

パフォーマンスへの疑問

ただ、気になったのは処理コストです。

ループ内で変数を宣言すると、その回数分だけ余計な処理が走るのではないか、というイメージがありました。とはいえ、体感で遅くなることはなく、これまでは可読性やメンテナンス性を優先してきました。

スマホ環境での再検討

今回はスマホという、PCと比べてスペックが限られた環境での開発です。そのため、この書き方をそのまま使って問題ないのか、改めて気になりました。

そこで調べてみると、すぐに答えにたどり着きました。

結論

ループ内での変数宣言は問題なし

結論としては、ループ内での変数宣言は問題ないとのことです。

IBMの技術文書のページでも、パフォーマンスに影響はほとんどないと明記されており、安心して使える書き方とされています。また、「発火後忘失」というブログでも同様の内容が分かりやすく解説されており、こちらも参考になります。

なぜ影響がないのか

その理由として、変数宣言そのものにはほとんど処理コストがかからない点が挙げられます。実際に処理が発生するのは、変数に値が代入されるタイミングです。

つまり、ループの外で一度だけ宣言した場合でも、ループ内で毎回宣言した場合でも、実際の処理内容に大きな違いはありません。このあたりの仕組みについても、「発火後忘失」の記事で丁寧に説明されています。

まとめ

ループ内での変数宣言については、パフォーマンスを理由に避ける必要はありません。それよりも、スコープを小さく保ち、コードを読みやすく安全にすることの方が重要です。

今回の調査でその点がはっきりしたので、何もうしろめたい思いをせずにがんがんループ内での変数宣言を使っていこうと思います!

0 件のコメント :

コメントを投稿