logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Różnice w rozmiarze kodu i wydajności przy kompilacji w AvrSide i własnym makefile

adamusx 29 Kwi 2006 21:26 1254 2
REKLAMA
  • #1 2575032
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    Witam.

    Zaniepokoila mnie pewna rzecz, nie wiem czy ja popelniam blad czy blad lezy po stronie nakladki dla WinAvr - AvrSide.. ale do rzeczy

    Do tej pory korzystalem z WinAVR+AvrSide, a ostatnio jako IDE wykorzystuje Crimson Editor (polecam!!!) (plus WinAVR oczywiscie).
    Jak wiadomo AvrSide automatycznie generuje makefile, mam ustawiony poziom optymalizacji na s (rozmiar kodu). Program skompilowany z poziomu AvrSide zajmowal mi ok 35% pamieci ATmegi16 i po wgraniu do uC wszystko ladnie chodzilo tak jak mialo ( program to analizator widma sygnalu audio wykorzystujacy DFT, wyswietlajacy wynik na 10 16-diodowych slupkach LED ).
    Jednak ostatnio ten sam program skompilowalem wykorzystujac wlasny makefile (poziom optymalizacji ustawilem takze na s!! ) i rozmiar kodu zmalal do 20 paru % i program po wgraniu do uC chodzi prawie dwu-krotnie szybciej!!!
    Dodam ze predkosci kwarcow mialem zdefiniowane takie same.

    Czy oprocz poziomu optymalizacji cos moze miec jeszcze wplyw na predkosci i rozmiar kodu?????
  • REKLAMA
  • #2 2575203
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    W WinAVR długość kodu zależy od Makefile. Wygenerowałem kiedyś Makefile za pomocą Mfile i pusta funkcja main stanowiąca program osiągnęła ponad 2kB! Używam najmniejsze działające Makefile dostarczone z kompilatotem. Wtedy WinAVR daje kody mniejsze niż inne kompilatory.
  • #3 2575260
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    To moze sie zgadzac, tez wykorzystyalem makefila dostarczone do GCC.
    Szkoda ze nie ma mozliwosci podgladu pliku Makefile generowanego przez AvrSide bo sprawa byla by wyjasniona.

    W takim razie niech to bedzie ostrzezenie dla inych, AvrSide znacznie zwieksza rozmiar kodu poprzez swoje makefile!
    Mimo wszystko to wydaje sie az niemozliwe by byla taka roznica w wielkosci generowanego kodu.
    Jak pisalem wyzej - dla ATmegi 16 w Avrside kompilator wygenerowal 5,6kb kodu a przy wykorzystaniu wlasnego makefilke tylko 3,4!!! Ponadto predkosc wykonywanego programu znacznie sie zwiekszyla.
REKLAMA