• 0

Loop efficiency comparison, while(true) VS for(;;)


Question

3 answers to this question

Recommended Posts

  • 0

it's the same in my experiences.......

the only thing i can think of is that the computer doesn't have to do any work when going to the next cycle for the for(;;) loop. with the while(true) loop, in each cycle the computer has to check to see if true is ... well, true

i hope that helps with this oh-so-complicated question/task

  • 0
  Quote
this oh-so-complicated question/task

*LOL*

Personally, I think it's just that they want to look smarter. while(true) looks like a newbie mistake. for(;;) looks like you know what you're doing. I doubt either is any more efficient than the other. If the for loop actually is more efficient, the difference would be measured in thousandths (if even that much) of a second.

  • 0

Well, at least in C using gcc as the compiler, there is no difference. The assembly code output is identical.

While loop:

        .file   "infwhile.c"
        .section        .rodata
.LC0:
        .string "Hello world\n"
        .text
.globl main
        .type   main, @function
main:
        pushl   %ebp
        movl    %esp, %ebp
        subl    $8, %esp
        andl    $-16, %esp
        movl    $0, %eax
        addl    $15, %eax
        addl    $15, %eax
        shrl    $4, %eax
        sall    $4, %eax
        subl    %eax, %esp
.L2:
        movl    $.LC0, (%esp)
        call    printf
        jmp     .L2
        .size   main, .-main
        .section        .note.GNU-stack,"",@progbitsident  "GCC: (GNU) 3.4.4 (Gentoo 3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8)"

For loop:

        .file   "inffor.c"
        .section        .rodata
.LC0:
        .string "Hello world\n"
        .text
.globl main
        .type   main, @function
main:
        pushl   %ebp
        movl    %esp, %ebp
        subl    $8, %esp
        andl    $-16, %esp
        movl    $0, %eax
        addl    $15, %eax
        addl    $15, %eax
        shrl    $4, %eax
        sall    $4, %eax
        subl    %eax, %esp
.L2:
        movl    $.LC0, (%esp)
        call    printf
        jmp     .L2
        .size   main, .-main
        .section        .note.GNU-stack,"",@progbitsident  "GCC: (GNU) 3.4.4 (Gentoo 3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8)"

And the code to produce those was just

for(;;) { printf("Hello world\n"); }

while (1) { printf("Hello world\n"); }

How this works out in other languages, I can't be sure. It also depends on how the compiler interprets it. But an infinite loop is just calling the same block of code over and over. So that means once you reach the end of the code, you jump back up to the start of it, which is what we see here. There is no real difference between a for loop and a while loop in assembly, although they can differ some depending on how the compiler handles it. I've heard some people state that while loops are faster, but whether or not that's true, I don't know. It shouldn't be that way, but depending on the code and the compiler, it may be true.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Windows 7 its the peak of windows desktop experience, it felt polished, it was CONSISTENT, the UI was not something made to ###### people off it was more functional and productive because everything felt like a improvement. Windows 8 was horrible they did fix a little with 8.1 but the thing its that in usability it was the same as 7 you can avoid all the metro stuff, you don't need to use the cripple setting or metro stuff, for me it was bearable because it can be customized and you can make it like 7 (sure you waste time setting stuff) even if you needed a third party app. And there are serious performance improvement over 7 faster startup, Windows 10 was ok too nothing felt out of place and the start menu was usable it was filled with bloat but as usual you can remove it, what i really hated about 10 at that time it have worse windows update, you cant customize what update to install and the privacy and telemetry is horrible again it was bearable even but w11, not only they double down on things that i seriously hate on 10 like the bloat, they force changes that make no sense, make an worse start menu, worse context menu, worse task bar. force microsoft account. When i tried w10 iot enterprise LTSC on a ancient laptop, i felt that it was a throwback of what OLD windows should be a normal desktop OS with only the basics and you put the rest it was fast fluid functional, no nagging, its a productive, spend less time setting up the OS the way i want it. every windows after 7 its making it worse for me because i have to spend more time setting up
    • https://filepilot.tech/ File Pilot is a whole lot faster and offers a lot of the same features. Has a free beta available, but it looks like it's going to be a paid app in the future.
    • 24H2 was absolutely plagued with stability and compatibility problems, many of which are still not solved. You don't have to take my word for that either, given that Microsoft have an official know issues page available. Games using older versions of Easy Anti-Cheat still cause 24H2 to lock up and/or BSOD, and there's still a compatbility hold on upgrades if you have them installed as a result. Maybe 25H2 will be less of a dumpster fire, but I wouldn't count on it given Microsoft's recent track record.
    • No I don't also get my news for one source. Have you considered that maybe I just don't care about tech enough to spend time reading multiple sources? Anyway my website preferences are way off topic.
    • The bloat on windows after 7 was acceptable, but 11 its even worse than chinese android phone makers, because at least they can remove the ads or apps, but w11 shove you bloat with no option to remove it, it seems that 25h2 will fix that
  • Recent Achievements

    • Week One Done
      MIghty Haul earned a badge
      Week One Done
    • One Month Later
      MIghty Haul earned a badge
      One Month Later
    • Collaborator
      KD2004 earned a badge
      Collaborator
    • One Month Later
      ataho31016 earned a badge
      One Month Later
    • One Month Later
      Delahenty Machinery earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      594
    2. 2
      Michael Scrip
      200
    3. 3
      ATLien_0
      192
    4. 4
      +FloatingFatMan
      140
    5. 5
      Xenon
      127
  • Tell a friend

    Love Neowin? Tell a friend!