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

deklarowanie zmiennych lokalnych

Object Storage Arubacloud
0 głosów
203 wizyt
pytanie zadane 16 stycznia 2023 w C i C++ przez polandonion Mądrala (7,040 p.)

Mam pytanko, czy deklaracja zmiennej lokalnej w pętli w taki sposób:

for (int i = 1; i <= n; i ++) {
    int x;
    cin >> x;

    // jakis kod
}

jest wolniejsza od takiej?

int x;
for (int i = 1; i <= n; i ++) {
    cin >> x;

    // jakis kod
}

Wsensie czy deklarowanie n razy tej samej zmiennej może być wolniejsze niż w tym drugim sposobie?

1 odpowiedź

+3 głosów
odpowiedź 16 stycznia 2023 przez adrian17 Ekspert (344,860 p.)
edycja 16 stycznia 2023 przez adrian17
 
Najlepsza
Nie, drobne różnice jak ta nie mają jakiegokolwiek wpływu na wydajność - wynikowa binarka wyjdzie dokładnie taka sama. Możesz sobie porównać że kod jest identyczny: https://godbolt.org/z/5oea3Kevb

"Deklarowanie zmiennej" to nie jest operacja procesora która zabiera czas; to informacja dla kompilatora (jak cały język). Kompilatora nie interesuje jak kod jest napisany, jeśli koniec końców z jego punktu widzenia semantyka kodu jest dokładnie taka sama. Jeśli zmienna nie jest używana poza pętlą i pętla nie używa wartości z poprzedniej iteracji, to optymalizator wygeneruje dokładnie ten sam kod maszynowy.

Jak już, to to pierwsze jest "teoretycznie wydajniejsze" - bo mówisz kompilatorowi, że ta zmienna żyje tylko w obrębie iteracji pętli, co ułatwia optymalizacje. Ale znowu, praktycznie zawsze kompilator umie coś takiego wywnioskować sobie sam.

No i ignorując wydajność, zmienne _zawsze_ powinieneś deklarować w najciaśniejszym scope'ie użycia, tak jak w tym pierwszym.

Podobne pytania

0 głosów
2 odpowiedzi 1,104 wizyt
pytanie zadane 1 stycznia 2020 w C i C++ przez Adrian234 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 223 wizyt
pytanie zadane 8 marca 2022 w C i C++ przez Daaa22 Dyskutant (8,250 p.)
+1 głos
3 odpowiedzi 2,452 wizyt
pytanie zadane 5 sierpnia 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)

92,573 zapytań

141,423 odpowiedzi

319,647 komentarzy

61,959 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!

...