アプリ版:「スタンプのみでお礼する」機能のリリースについて

for文の無限ループ for(; ;) と、
while文の無限ループ while(1) は、
どのように違うのですか?

処理速度やCPU負荷を考慮して、
どちらを使用するか悩んでいます。

よろしくお願いします。

A 回答 (2件)

最適化されれば、どちらも一緒と思います。


心配?ならアセンブラのソースを出力させて確認するのが一番かと。(もしくは、デバッグでコードを確認)
ちなみに、Borland Free Compilerでは、どちらのループ命令もジャンプ命令が1個生成されるだけです。

こんな感じのコードになりました
loop_top:
ループ内処理のコード
jmp loop_top
    • good
    • 1

よほど間抜けなコンパイラでない限り、for(;;)とwhile(1)の処理速度やCPU負荷は変わりません。


なお、インタプリタであれば、while(1)の方が、構文解析の負荷がやや大きい気はしますが、インタプリタの実装にもよるので一概には言えません。

ところで、本当に処理速度やCPU負荷がシビアなのであれば、for文やwhile文ではなく、goto文を使った方がよいでしょう。特にC++の場合、(非常に単純なものを除けば)for文やwhile文のブロック有効範囲への出入りの際に、オブジェクトの生成・解体や、例外処理のための処理が入る可能性があるからです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A