REKLAMA

Programista 7/2020 (94) – grudzień / styczeń 2020/21 – Moc kompilatorów

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‌;

  • LTO – rozszerzenie możliwości optymalizacyjnych;
  • Implementacja LTO;
  • ThinLTO;
  • Wykorzystanie danych z profilowania;
  • Instrumentacja kodu;
  • Próbkowanie kodu;
  • Kiedy używać PGO i LTO?

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.

>>FRAGMENT TEGO ARTYKUŁU DO POBRANIA<<