直接上结论:for(;;)的效率高于while(1)。
证明如下:
C源代码:
void main(void){
while(1);
for(;;);
}
对应的汇编代码:
---void main(void) {
00D616F0 push ebp
00D616F1 mov ebp,esp
00D616F3 sub esp,0C0h
00D616F9 push ebx
00D616FA push esi
00D616FB push edi
00D616FC lea edi,[ebp-0C0h]
00D61702 mov ecx,30h
00D61707 mov eax,0CCCCCCCCh
00D6170C rep stos dword ptr es:[edi]
00D6170E mov ecx,offset _28BAC0EC_mian@cpp (0D6B000h)
00D61713 call @__CheckForDebuggerJustMyCode@4 (0D61203h)
---while (1);
00D61718 mov eax,1
00D6171D test eax,eax
00D6171F je main+33h (0D61723h)
00D61721 jmp main+28h (0D61718h)
---for (;;);
00D61723 jmp main+33h (0D61723h)
}
汇编代码解析:
可以看到,“while(1);”语句,需要4条汇编指令:立即数、与操作、比较、跳转;
而“for(;;);”语句,只需要一条汇编指令。