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

question-closed C++ __fastcall a skutki.

VPS Starter Arubacloud
+1 głos
129 wizyt
pytanie zadane 26 stycznia 2019 w C i C++ przez dawid2002 Mądrala (5,190 p.)
zamknięte 27 stycznia 2019 przez dawid2002
Witam! Zastanawia mnie pewna sprawa. Podobno konwencja wywołań __fastcall sprawia że parametry funkcji są w rejestrze. Wydaje się że jest ona zawsze przydatna gdy chcemy mieć wydajny program.

Ale czy zawsze można ją używać? Czy są jakieś ograniczenia , o których należy pamiętać przy stosowaniu tej konwencji? Po prostu chce wiedzieć czy stosowanie tej konwencji ma jakieś złe skutki.

Z góry dziękuje!
komentarz zamknięcia: powód opisałem w komentarzu
komentarz 26 stycznia 2019 przez j23 Mędrzec (194,920 p.)

jest ona zawsze przydatna gdy chcemy mieć wydajny program

Coś mi się wydaje, że inline'owanie funkcji daje znacznie lepsze rezultaty.

komentarz 27 stycznia 2019 przez dawid2002 Mądrala (5,190 p.)

Zrobiłem testy konwencjom fastcall , cdecl oraz stdcall , i okazało się że różnice wydajnościowe są praktycznie zerowe , więc nie ma potrzeby stosowania jakiś wydajniejszych konwencji skoro różnica jest niewidoczna. Dlatego właśnie postanowiłem że zamknę pytanie.

komentarz 27 stycznia 2019 przez j23 Mędrzec (194,920 p.)
Ta konwencja może mieć jakiś istotny pływ na czas wywołania funkcji na bardzo słabych platformach sprzętowych, gdzie koszt odkładania parametrów na stosie jest kosztowny.
komentarz 27 stycznia 2019 przez dawid2002 Mądrala (5,190 p.)
Dzięki za komentarz ten! Zastanawiało mnie właśnie dlaczego stosuje się te konwencje skoro i tak zysk jest znikomy.
komentarz 27 stycznia 2019 przez j23 Mędrzec (194,920 p.)

Wiesz, przy takich mikro optymalizacjach czynników wpływających na wydajność może być naprawdę wiele, i niewykluczone, że użycie tej konwencji może nieco poprawić wyniki. Wszystko zależy od tego, jak takiej fastcallowej funkcji używamy, jak często jest wywoływana, jak duża jest itd. itp. IMO przy pisaniu zwykłych aplikacji desktopowych używanie __fastcall niewiele da.

Podobne pytania

0 głosów
1 odpowiedź 255 wizyt
pytanie zadane 22 marca 2021 w C i C++ przez mattaha Użytkownik (690 p.)
0 głosów
0 odpowiedzi 306 wizyt
pytanie zadane 23 listopada 2019 w C i C++ przez Karoga Nowicjusz (140 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...