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

Która metoda jest wydajniejsza i gdzie mogę znaleźć więcej informacji na temat podstawowych działań?

Object Storage Arubacloud
+3 głosów
361 wizyt
pytanie zadane 18 kwietnia 2021 w C i C++ przez Daaa22 Dyskutant (8,250 p.)

Chciałbym sprawdzić czy zmienna typu int należy do zbioru liczb naturalnych większych lub równych 3, czyli mamy dwie możliwości. Pierwsza to

if( x >= 3 )

A druga to

if( x > 2 )

Która z tych instrukcji jest wydajniejsza? Jest to istotne pytanie ponieważ jeżeli takie instrukcje wykonują się w pętli miliony razy to ma to pewnie jakiś wpływ na wydajność. I gdzie mogę poczytać jakie takie podstawowe operacje mają wpływ na prędkość działania (najlepiej jakby było napisane jaka operacja przy jakiej zmiennej ile wykorzystuje mocy obliczeniowej)

2 odpowiedzi

+3 głosów
odpowiedź 18 kwietnia 2021 przez tangarr Mędrzec (154,860 p.)
Obie konstrukcje zostaną skompilowane do takiego samego kodu maszynowego.
Pisząc programy raczej powinieneś się przejmować złożonością obliczeniową algorytmów i prawidłowym przekazywaniem nietrywialnych obiektów między funkcjami.
komentarz 18 kwietnia 2021 przez Daaa22 Dyskutant (8,250 p.)
"prawidłowym przekazywaniem nietrywialnych obiektów między funkcjami", tzn obiekt nietrywialny to class albo struct? I przekazywać je za pomocą wskaźników zamiast referencji, chyba że chce do funkcji tylko kopie wysłać?
1
komentarz 18 kwietnia 2021 przez tangarr Mędrzec (154,860 p.)
Tak, ale nie tylko. Równie ważna jest prawidłowe korzystanie z konstruktorów (oraz operatorów przypisania) kopiujących i przenoszących.
+2 głosów
odpowiedź 18 kwietnia 2021 przez mokrowski Mędrzec (156,140 p.)
Sprawny kompilator wygeneruje w obu przypadkach taki sam kod asemblera: https://godbolt.org/z/4Y358e61z
komentarz 18 kwietnia 2021 przez Daaa22 Dyskutant (8,250 p.)
Tzn każdy kod C++ jest najpierw tłumaczony na kod asemblera a potem z asemblera na kod maszynowy?
komentarz 18 kwietnia 2021 przez tangarr Mędrzec (154,860 p.)
Assembler to jest kod maszynowy.
komentarz 18 kwietnia 2021 przez mokrowski Mędrzec (156,140 p.)

Assembler to nie jest kod maszynowy. Ale to akademicka uwaga.

komentarz 19 kwietnia 2021 przez Oscar Nałogowiec (29,320 p.)

@Daaa22,
 Kiedyś miałem kompilator który najpierw przekształcał C++ do C, a dopiero później kompilował do kodu.

komentarz 19 kwietnia 2021 przez profesorek96 Szeryf (91,420 p.)
@Oscar Tak w swoich początkach C++ był tłumaczony na język C, dopiero później ten przetłumaczalny kod był kompilowany za pomocą kompilatora C.
komentarz 19 kwietnia 2021 przez mokrowski Mędrzec (156,140 p.)

Kompilatory dziś tłumaczą kod albo bezpośrednio na kod asemblera, albo na kod pośredni (co robi np. clang oraz NVIDIA  w projekcie CUDA, wykorzystując LLVM). Robi tak także RUST.

Rzeczywiście, znam (stary) kompilator tłumaczący z C++ na C. Nazywał się Comeau https://en.wikipedia.org/wiki/Comeau_C/C%2B%2B .

Dzisiaj np VALA czy NIM tłumaczyć mogą do kodu w C.

Podobne pytania

0 głosów
1 odpowiedź 209 wizyt
0 głosów
0 odpowiedzi 141 wizyt
pytanie zadane 23 lutego 2019 w Assembler przez Huberti Gaduła (4,500 p.)
0 głosów
2 odpowiedzi 318 wizyt
pytanie zadane 5 lutego 2022 w Systemy operacyjne, programy przez sisOOO Obywatel (1,370 p.)

92,657 zapytań

141,550 odpowiedzi

319,989 komentarzy

62,026 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!

...