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

question-closed Zmiana wartości zmiennych a szybkość wykonywania w C++

Cloud VPS
0 głosów
797 wizyt
pytanie zadane 3 kwietnia 2016 w C i C++ przez wxnko Użytkownik (580 p.)
zamknięte 4 kwietnia 2016 przez wxnko

Cześć. Mam problem otóż nie wiem, który sposób zamiany miejsc zmiennych będzie szybszy i wydajniejszy. 

int x = 5;
int y = 7;
x = x+y;
y = x-y;
x = x-y;

czy może 

int x = 5;
int y = 7;
int bufor = x;
x = y;
y = bufor;

Które operacje są szybsze - przypisywanie innych wartości zmiennym czy może dodawanie i odejmowanie.

 

komentarz zamknięcia: Udzielenie odpowiedzi

4 odpowiedzi

+3 głosów
odpowiedź 3 kwietnia 2016 przez adrian17 Mentor (354,120 p.)
wybrane 4 kwietnia 2016 przez wxnko
 
Najlepsza

Ta, która konkretniej mówi co chcesz zrobić. Twoim celem nie jest bawienie się z dodawaniem i odejmowaniem, tylko zamiana wartości. W dodatku kod z dodawaniem może się zachowywać błędnie jeśli x + y będzie większe od zakresu inta.

(a najlepiej std::swap().)

komentarz 3 kwietnia 2016 przez wxnko Użytkownik (580 p.)
Tak, o zakresie pamiętam, myślałem nad nim. Tylko nadal pytanie co szybsze - przypisywanie zmiennych czy działania arytmetyczne.
komentarz 3 kwietnia 2016 przez draghan VIP (106,230 p.)
Arytmetyka jest wolniejsza, niż przypisanie - przy działaniach arytmetycznych również dochodzi do operacji przypisań. Żeby poznać szczegóły, musisz poznać asembler procesora, na który piszesz program.

Ale już nawet pomijając to, która z operacji potrzebuje mniej cykli procesora: zauważ, że przy Twoich działaniach arytmetycznych również robisz przypisania.
0 głosów
odpowiedź 3 kwietnia 2016 przez KubenQPL Maniak (62,840 p.)
a spróbuj funkcją swap(); tylko nie pamiętam czy trzeba było jakąś bibliotekę dodawać
komentarz 3 kwietnia 2016 przez niezalogowany
Trzeba includ'ować utility. Ale swap robi dokładnie to samo co 2 kod.
komentarz 3 kwietnia 2016 przez adrian17 Mentor (354,120 p.)
jest w <utility>.
0 głosów
odpowiedź 3 kwietnia 2016 przez dubgron Mądrala (5,620 p.)
Osobiście polecam używać metody std::swap(), ale jeżeli chodzi o twoje pytanie, to używanie dodatkowej zmiennej jest około 2 razy szybsze. Pozdrawiam.
0 głosów
odpowiedź 3 kwietnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Nie powinieneś się przejmować stałą w programie, ale złożonością obliczeniową

Podobne pytania

0 głosów
1 odpowiedź 812 wizyt
pytanie zadane 11 lutego 2022 w C i C++ przez Olafisz Nowicjusz (230 p.)
0 głosów
3 odpowiedzi 1,841 wizyt
0 głosów
1 odpowiedź 1,105 wizyt
pytanie zadane 16 grudnia 2018 w C# przez ProCat Początkujący (310 p.)

93,456 zapytań

142,451 odpowiedzi

322,721 komentarzy

62,837 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

Kursy INF.02 i INF.03
...