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

deklarowanie zmiennych lokalnych

Aruba Cloud - Virtual Private Server VPS
0 głosów
231 wizyt
pytanie zadane 16 stycznia 2023 w C i C++ przez polandonion Dyskutant (7,630 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 Mentor (352,180 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,418 wizyt
pytanie zadane 1 stycznia 2020 w C i C++ przez Adrian234 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 286 wizyt
pytanie zadane 8 marca 2022 w C i C++ przez Daaa22 Dyskutant (8,250 p.)
+1 głos
3 odpowiedzi 2,802 wizyt
pytanie zadane 5 sierpnia 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)

93,291 zapytań

142,289 odpowiedzi

322,332 komentarzy

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...