Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Rozmiar ma znaczenie... czyli jak sprawdzić dlaczego nasz program "puchnie"

tmf 20 Nov 2022 22:37 1167 7
  • Witam was w kolejnych odcinkach, tym razem poświęconych tematowi optymalizacji.
    Z grubsza każdy wie czym jest optymalizacja wprowadzana przez kompilator, większość kojarzy różne poziomy optymalizacji, ale już nie każdy wie, że te poziomy mogą być określane per projekt (to wiedzą wszyscy), a także per plik lub per funkcja (o czym już wiedzą tylko wybrani).
    W tych odcinkach chciałbym pokrótce omówić jak poziomy optymalizacji konfigurować i jakie one mają konsekwencje dla projektu, a w drugim odcinku powiedzieć trochę więcej o narzędziach toolchaina, które pozwalają nam szukać „oszczędności” i o tym jak je zintegrować z Microchip Studio.
    Co prawda tworząc materiał bazowałem na AVR, ale zasadniczo omawiane problemy są uniwersalne i w równym stopniu odnoszą się do innych platform, na których dostępny jest gcc.
    Miłego oglądania i jak zwykle nie zapomnijcie podzielić się swoimi uwagami i przemyśleniami!







    Cool? Ranking DIY
    About Author
    tmf
    Moderator of Microcontroller designs
    Offline 
  • #2
    macfanpl
    Level 6  
    No to teraz ja. Jestem związany z FOSS od 20+ lat, napisałem nie jeden fw z topFuck.
    Podczas pracy z poważnie zrobionym IDE dowolnego języka, mamy coś takiego jak OptimizerD ( subfix D oznacza że jest to w formie demona )

    Teraz tak: większość dupkarek analizuje kod w trakcie pisania i - w razie potrzeby - wyświetla wskazówki IRT. Często te wskazówki zawierają jeden, lub kilka możliwych fixów. Można jeszcze doinstalować linter konkretnego języka, ale odradzam, bo jest to proszenie się o kłopoty. Pro sobie poradzi, nowicjusz się wyłoży. W wielkim skrócie chodzi o to że:

    * 99% ze zgłaszanych przez lintery "problemów" to w rzeczywistości false-positive.
    * konfiguracja linterów jest czasochłonna i nieoczywista.

    Teraz pytanie jak ja optymalizuje? Bardzo prosto: nie mam jednego profilu optymalizatora, ba: nie mam optymalizatora wogóle. Każdorazowo pytam klienta jakie ma wymagania co do optymalizacji i kodzę pod konkretny sprzęt.
  • #3
    Janusz_kk
    Level 35  
    macfanpl wrote:
    No to teraz ja.

    Mam prośbę, napisz to jeszcze raz zrozumiałym językiem dla przeciętnego programisty C albo dodaj słowniczek pojęć użytych w wypowiedzi.
  • #4
    acctr
    Level 19  
    macfanpl wrote:
    napisałem nie jeden fw z topFuck

    @macfanpl popieram przedmówcę, wpisuję w google "topFuck" i zgadnij co dostaję ...
  • #6
    cefaloid
    Level 33  
    Pytanie czy w 2022r jest jeszcze sens spędzać godziny nad optymalizacją kodu?

    Zapewne są przypadki, że tak.

    Ale w większości przypadków raz, że kompilator robi to za nas coraz lepiej a dwa: dla małych serii produktowych nasz czas spędzony nad analizą co by tu zrobić będzie więcej wart jak różnica w cenie do kontrolera który nasz kod zmieści.
  • #7
    tmf
    Moderator of Microcontroller designs
    cefaloid wrote:
    Ale w większości przypadków raz, że kompilator robi to za nas coraz lepiej a dwa: dla małych serii produktowych nasz czas spędzony nad analizą co by tu zrobić będzie więcej wart jak różnica w cenie do kontrolera który nasz kod zmieści.

    Mam wrażenie, że nie odsłuchałeś odcinka. Bo dokładnie opisałem, kiedy poszukiwanie oszczędności jest nieuniknione, a kiedy można sobie odpuścić dobierając MCU z większą ilością FLASH.
    Nie zawsze jest to opcja, bo nie zawsze mamy możliwość zmiany MCU na większy, bo może już po prostu większy nie być, ponadto nie za bardzo ma sens wymieniać MCU, jeśli jest to kwestia skrócenia kodu o parę procent. Ponadto czasami zależy nam, aby różne fragmenty kodu były optymalizowane pod różnym kątem - szasami zależy nam na rozmiarze, czasami na szybkości. O tym jest odcinek trzeci mojej serii.
  • #8
    cefaloid
    Level 33  
    tmf wrote:

    Mam wrażenie, że nie odsłuchałeś odcinka. Bo dokładnie opisałem, kiedy poszukiwanie oszczędności jest nieuniknione,

    Mam wrażenie, że nie przeczytałeś co napisałem. Bo też o tym wspomniałem.


    Ale może chodzi o to by się uczepić fragmentu wypowiedzi i toczyć wojnę o nic.