Czy jest różnica w wydajności programu, który używa instrukcji warunkowej switch zamiast konstrukcji warunkowej if else?
Czy jest różnica w wydajności programu, który używa instrukcji warunkowej switch zamiast konstrukcji warunkowej if else?
Wierząc konwerterowi online, instrukcja switch case powoduje większe rozwinięcie kodu do poziomu asemblera:
Pytanie tylko, czy ktoś przejmuje się kodem na takim poziomie?
void test(int option) { if(option == 1) { }else if(option == 2) { }else {} } void test2(int option) { switch(option){ case 1: break; case 2: break; default: break; } } x86-64 gcc 7.2 test(int): push rbp mov rbp, rsp mov DWORD PTR [rbp-4], edi nop pop rbp ret test2(int): push rbp mov rbp, rsp mov DWORD PTR [rbp-4], edi mov eax, DWORD PTR [rbp-4] cmp eax, 1 je .L7 cmp eax, 2 je .L8 jmp .L6 .L7: nop jmp .L6 .L8: nop .L6: nop pop rbp ret