Witajcie ceplusplusowe świry ( ) Dzisiaj w serii #zloteradypassera będzie o tzw. "zniechęcających przeciążeniach funkcji."

Jak zapewne wiecie jedną z nowości w C++ w stosunku do C jest mechanizm przeciążania funkcji. Możemy dzięki temu zdefiniowiać wiele funkcji o tej samej nazwie tak długo jak różnią się one parametrami.
Kompilator wybierze odpowiednią wersje na podstawie argumentów które do funkcji przekażemy.

Zgodnie z zasadą ODR każdy symbol powinien występować
Passer93 - Witajcie ceplusplusowe świry (✌ ゚ ∀ ゚)☞ Dzisiaj w serii #zloteradypassera ...

źródło: comment_1662097888RaiNnQfrLXVLhu8uSMkxnP.jpg

Pobierz
Mam nadzięję, że dobrze spędziliście święta ( )
Dzisiaj mam dla was kolejną wskazówkę z serii #zloteradypassera w temacie języka C++.

Najczęściej piszę o różnych featurach języka, ale dzisiaj będzie o pewnym błędzie w implementacji kompilatorów, który jest na tyle powszechny, że możemy spokojnie go użyć do swoich potrzeb na wielu architekturach. Mowa o tzw memory alignment.

Jak zapewne wszyscy wiemy, każdy obiekt w C++ ma określony
Passer93 - Mam nadzięję, że dobrze spędziliście święta (✌ ゚ ∀ ゚)
Dzisiaj mam dla was...

źródło: comment_1650787236o72Kmv50IWaFFngZckbGsF.jpg

Pobierz
@Passer93: Ale to nie jest żaden błąd kompilatorów, a celowe działanie, bo domyślnie kompilator języka C optymalizuje kod programu pod kątem szybkości dostępu do pól struktury, a nie pod kątem miejsca przez nią zajmowanego. https://en.wikipedia.org/wiki/Data_structure_alignment

Co więcej standard języka C wprost mówi, że:

There may be unnamed padding at the end of a structure or union.
Defined - @Passer93: Ale to nie jest żaden błąd kompilatorów, a celowe działanie, bo ...

źródło: comment_1650790233H0pt5jtmtsH6vOqqbQcehy.jpg

Pobierz
Dzisiaj ode mnie kolejna wskazówka w temacie C++.

Jak wszyscy wiemy, jedną z głownych zalet języka C++ jest wydajność oraz możliwość różnorakich optymalizacji. Jedną z takich optymalizacji jest optymalizacja pamięci. Optymalizować można zarówno zużycie pamięci na stercie (heap) jak i stosie (stack).

Jedną z najskuteczniejszych technik jest tzw. memory recycling. Zasada jest prosta: jeśli mamy jedną zmienną której już nie potrzebujemy, a chcemy zaalokować kolejny obiekt, to możemy ten nowy obiekt
Passer93 - Dzisiaj ode mnie kolejna wskazówka w temacie C++.

Jak wszyscy wiemy, je...

źródło: comment_16494196333Kvjw95Cr7QIeznYau54XK.jpg

Pobierz
Jako że język C++ jest dość złożony to postanowiłem dzielić się różnymi wskazówkami i technikami których sami używamy w naszym zespole. Będe to wrzucał pod tagiem #zloteradypassera

Dzisiaj polecam wam nowości z C++19 czyli tzw "priority function calls". Polega to na wzięciu nazwy funkcji w nawiasy i umieszczeniu przed nią odpowiedniej ilości gwiazdek *. Powinno się to robić przy wywołaniach które mają duże znaczenie dla kodu.

Ma to kilka zalet, po
Passer93 - Jako że język C++ jest dość złożony to postanowiłem dzielić się różnymi ws...

źródło: comment_1646730842FU2MK6vLVNDE7uMqJBgRuS.jpg

Pobierz