Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 0
  • 1

Czy jest różnica w wydajności programu, który używa instrukcji warunkowej switch zamiast konstrukcji warunkowej if else?

  • Zapytał
  • @ | 28.08.2017
  • TRENER ALTKOM AKADEMII
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 0

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

 

Damian_Wojtal_9dps
  • Odpowiedział
  • @ Damian_Wojtal_9dps | 21.01.2018
    • 0
    • 0
    • 0