Wpis z mikrobloga

Czy ktoś zna tu asemblera? :D

Mamy dwa sposoby zapisu tego samego kodu (taki sam przepływ sterowania):

1.

if(WARUNEK) {

return COŚ;

}

// w przeciwnym razie

2.

if(WARUNEK) {

return COŚ;

} else {

// w przeciwnym razie

}

Wiadomo, że w lepszym stylu jest zapis pierwszy - brak redundancji, wygląda po prostu lepiej. Ale słyszałem też, że na poziomie asemblera przy drugim zapisie mamy dwa skoki zamiast jednego (po jednym dla if i dla else) i przez to drugi zapis jest teoretycznie mniej wydajny (oczywiście praktycznie różnica jest niemożliwa do uchwycenia).

Czy to jest prawda?

Czy gcc/g++ optymalizuje to sam (domyślnynie)?

#stylkodowania #programowanie #jezykc #cpp
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Onoki: ale te 2 warunki są zupełnie inne. 1. "w przeciwnym razie" wykona się zawsze, a 2. wykona sie tylko jeśli nie wykona sie warunek if(WARUNEK)
  • Odpowiedz
@Onoki: Chyba oczywiste, że kompilator wygeneruje to samo. Nawet w kompilatorze Javy można ustawić, że pokazywane są warningi w takich przypadkach jak 2) (niepotrzebny else).
  • Odpowiedz