while循环比循环更有效

mre*_*555 5 c++

有人告诉我,while循环比for循环更有效.(c/c ++)这似乎很合理,但我想找到一种证明或反驳它的方法.

我尝试使用类似的代码片段进行三次测试.每个包含Nothing但具有相同输出的for或while循环:

  1. 编译时间 - 大致相同
  2. 运行时间 - 相同
  3. 编译成英特尔汇编代码并进行比较 - 相同数量的行和几乎相同的代码

我应该尝试过其他任何东西,还是任何人都可以通过某种方式确认?

Car*_*iel 4

所有循环都遵循相同的模板:

{
// Initialize
LOOP: 
    if(!(/* Condition */) ) {
        goto END
    }

    // Loop body

    // Loop increment/decrement
    goto LOOP
}
END:
Run Code Online (Sandbox Code Playgroud)

因此这两个循环是相同的:

// A
for(int i=0; i<10; i++) {
    // Do stuff
}

// B
int i=0;
while(i < 10) {
    // Do stuff
    i++;
}

// Or even
int i=0;
while(true) {
    if(!(i < 10) ) {
        break;
    }

    // Do stuff
    i++;
}
Run Code Online (Sandbox Code Playgroud)

两者都转换为类似的内容:

{
int i=0;
LOOP: 
    if(!(i < 10) ) {
        goto END
    }

    // Do stuff

    i++;
    goto LOOP
}
END:
Run Code Online (Sandbox Code Playgroud)

未使用/无法访问的代码将从最终的可执行文件/库中删除。

Do-while 循环跳过第一个条件检查并留给读者作为练习。:)