• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ktore z tych rozwiązań jest bardziej wydajne?

Object Storage Arubacloud
–1 głos
218 wizyt
pytanie zadane 30 grudnia 2015 w C i C++ przez Daaa22 Dyskutant (8,250 p.)

1.

cin >> wyb;
if(wyb==1)
{
nic++;
}
if(wyb==2)
{
nic--;
}
if(wyb==3)
{
nic=0;
}
else
{
nic=nic;
}

2.

cin >> wyb;
if(wyb==1)
{
nic++;
}
else if(wyb==2)
{
nic--;
}
else if(wyb==3)
{
nic=0;
}
else
{
nic=nic;
}

 

4 odpowiedzi

+1 głos
odpowiedź 30 grudnia 2015 przez Macek Kolo Mądrala (5,480 p.)
wybrane 31 grudnia 2015 przez Daaa22
 
Najlepsza
Jeśli nie masz przedziałów to switch, rozwiązanie bez else if będzie sprawdzało wszystkie warunki if po kolei, ale nie ma to znaczenia przy tak małej ilości danych. W takich sytuacjach nawet nie ma co mówić który wydajniejszy.
komentarz 30 grudnia 2015 przez Daaa22 Dyskutant (8,250 p.)
Powiedzmy, że w 1 jest milion if, a w drugim milion else if. Który sprawdzi wszystko szybciej?
komentarz 30 grudnia 2015 przez fckueve Dyskutant (9,470 p.)
oczywiście że else if'y będą działały szybciej.

jeżeli będziesz miał milion ifów, każdy będzie sprawdzał warunek. Jeżeli będziesz miał milion else ifów, po czy np: setny okaże się prawdą, reszta, czyli 999900 else ifów zostanie pominięta
+2 głosów
odpowiedź 30 grudnia 2015 przez juriiw Gaduła (3,470 p.)

Mi się wydaje, że opcja z else ifem będzie szybsza w większości przypadków. Dlatego, że w przypadku pierwszym niezależnie od wyniku testu logicznego program przeskoczy do następnego if-a i będzie poddawał testowi następne zadanie. Natomiast w drugim przypadku jeśli  pierwszy if będzie równy true, to nie sprawdzi kolejnych dwóch else ifów...i tutaj widziałbym oszczędność. Oczywix switch (jak już ktoś powiedział wcześniej) byłby szybszy i "elegantszy".

 

+2 głosów
odpowiedź 30 grudnia 2015 przez adrian17 Ekspert (344,860 p.)

W tym konkretnym przypadku? Praktycznie nie ma różnicy. To znaczy: kompilator jest na tyle sprytny, że potrafi poznać, że jeśli wyb==1 jest spełniony, to wyb==2 nie będzie. Ba, przepuściłem oba przypadki przez Clanga z -O i dla obu wygenerował dokładnie taki sam kod.

W ogólnym przypadku? Twój kod powinien odpowiadać temu, jak program ma się zachowywać. Przypadek drugi jest bliższy zamierzeniu programisty i z samego tego powodu powinien być preferowany.

+1 głos
odpowiedź 30 grudnia 2015 przez Rogargol Pasjonat (16,600 p.)
To zalezy od wartosci wyb. Jeśli wyb jest np rowne 20 to praktycznie wychodzi na to samo, albo wydajniejsze jest odrobine pierwsze rozwiazanie, bo nie posiada elsow.

W momencie jesli jest rowne np 1, 2, to wydajeniejsze jest drugie.
komentarz 30 grudnia 2015 przez Daaa22 Dyskutant (8,250 p.)
Powiedzmy, że mam milion if, a w drugim milion else if. Który sprawdzi warunki szybciej?
komentarz 30 grudnia 2015 przez Rogargol Pasjonat (16,600 p.)
tak jak pisalem, w przypadku jesli warunek zostanie spelniony szybko (tzn w jednym z pierwszych ifow) to szybciej zadziala instrukcja z elsem, bo nie bedzie juz wykonywac dalszych instrukcji. Jesli natomiast zostanie spelniony w jednym z ostatnich, lub w ogole nie zostanie spelniony to odrobine szybciej teoretycznie zadziala ten bez elsow. Tak czy inaczej, sa ta bardzo marginalne roznice.

Podobne pytania

0 głosów
1 odpowiedź 120 wizyt
pytanie zadane 25 listopada 2015 w SQL, bazy danych przez Szymon Lisowiec Mądrala (7,150 p.)
0 głosów
1 odpowiedź 83 wizyt
+1 głos
1 odpowiedź 104 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...