Różnica w wydajności pomiędzy podwójnym warunkiem a dwoma warunkami

0

Hey, mam pytanie: czy z punktu widzenia wydajności ma znaczenie, który z poniższych rozwiązań wybiorę?
opcja 1:

if(warunek1 && warunek2) 
   { ... }

opcja 2:

if(warunek1){
   if(warunek2){
      ...
   }
}

Z góry dzięki za rozwianie moich wątpliwości.

1
  1. Dokładnie na to samo się skompiluje nawet jeżeli masz wyłączoną optymalizacje.
  2. Nie przejmuj się różnicami na tak niskim poziomie, lepiej zmień algorytm.
2

Tak jak wyzej.

Dla kodu:

#include <cstdio>

void f1(int a, int b) {
  if(a == 1 && b == 2) {
  	puts("Hello");
  }
}

void f2(int a, int b) {
  if(a == 1) {
    if(b == 2) {
      puts("Hello");
    }
  }
}

int main() {
  f1(3, 2);
  f2(2, 3);
}

Bedzie to wygladac tak:

.LC0:
	.string	"Hello"
f1(int, int):
	cmp	edi, 1
	je	.L10
.L1:
	rep; ret
.L10:
	cmp	esi, 2
	jne	.L1
	mov	edi, OFFSET FLAT:.LC0
	jmp	puts
f2(int, int):
	cmp	edi, 1
	je	.L13
.L11:
	rep; ret
.L13:
	cmp	esi, 2
	jne	.L11
	mov	edi, OFFSET FLAT:.LC0
	jmp	puts
main:
	xor	eax, eax
	ret

1 użytkowników online, w tym zalogowanych: 0, gości: 1