vcmfc请进,关于你在12期《程序员》上回答while(true)与for(;;)的效率比较...
陈硕 2001-12-10 11:17:04 我在Borland C++ Builder 5.5 Free下做的测试:
int main()
{
int i = 0;
while(true){
if (i>10) break;
i++;
}
i = 0;
for(;;){
if (i>10) break;
i++;
}
}
编译得:
;
; int main()
;
push ebp
mov ebp,esp
;
; {
; int i = 0;
;
@1:
xor eax,eax
;
; while(true){
; if (i>10) break;
;
; EAX = i
@2:
cmp eax,10
jg short @4
;
; i++;
;
inc eax
jmp short @2 ;<<<****>>>
;
; }
;
;
; i = 0;
;
@4:
xor eax,eax
;
; for(;;){
; if (i>10) break;
;
; EAX = i
@5:
cmp eax,10
jg short @7
;
; i++;
;
inc eax
jmp short @5 ;<<<****>>>
@7:
xor eax,eax
;
; }
;
; }
;
@10:
@9:
pop ebp
ret
请注意有<<<****>>>标记的两行,我认为while(true)与for(;;)在BCB中效率是一样的,不知你在什么编译器下做的测试?