Kompilatory już dawno przestały być jedynie translatorami kodu źródłowego na kod maszynowy. Obecnie oferują programiście coraz bardziej wyrafinowane możliwości analizy i optymalizacji. Warto z nich skorzystać, zanim przystąpi się do żmudnego i podatnego na błędy, ręcznego usprawniania napisanego wcześniej kodu.
Kompilatory są podstawowymi narzędziami, jakie wykorzystuje programista w swojej codziennej pracy. Pozwalają one nie tylko na generowanie kodu wynikowego w oparciu o kod źródłowy, ale także, a może przede wszystkim, na jego optymalizowanie. Standardowe procedury optymalizacyjne są załączane za pomocą flagi -O<arg>, gdzie parametr arg opisuje zbiór predefiniowanych operacji, jakie kompilator wykonuje, aby wygenerować bardziej wydajny (lub o mniejszym rozmiarze) kod wynikowy. Zazwyczaj, gdy kod wygenerowany przez kompilator nie spełnia wymagań wydajnościowych, programiści przystępują do czasochłonnych, ręcznych optymalizacji. Twórcy kompilatorów wychodzą naprzeciw rosnącym oczekiwaniom programistów i z każdą kolejną wersją kompilatora dostarczają coraz bardziej wydajne możliwości optymalizacji. Pozwala to na ominięcie kłopotliwego ręcznego dostrajania kodu. Celem tego artykułu jest zaprezentowanie na przykładzie projektu LLVM [5] i kompilatora Clang dodatkowych optymalizacji, które pozwolą wygenerować wydajniejszy kod bez potrzeby modyfikacji źródeł...
Zagadnienia poruszane w tym artykule:
Organizacja procesu kompilacji;
Artykuł pochodzi z magazynu Programista nr 94 (7/2020). Jest to wydanie z przełomu grudnia 2020 r. i stycznia 2021 r.
Szczegółowy spis treści wydania nr 94: https://programistamag.pl/programista-7-2020-94/
Autorem artykułu jest Dominik Adamski. Programista w Mobica Limited. Zwolennik maksymalnego wykorzystania dostępnych narzędzi programistycznych w celu uzyskania jak najbardziej wydajnego kodu. Aktywnie działa w łódzkiej grupie CEHUG, która ma na celu dzielenie się wiedzą z zakresu szeroko pojętych systemów wbudowanych. Prywatnie pasjonat górskich wędrówek.