-
Data: 2012-05-06 00:26:23
Temat: Re: [OT] koszt 'virtual' na ARM
Od: Michoo <m...@v...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 05.05.2012 23:54, Andrzej Ekiert wrote:
> Dnia 05-05-2012 o 22:50:52 Michoo <m...@v...pl> napisał(a):
>
>
>>
>> Dopisałem do projektu następujące klasy:
>
> [snip kod]
>
>> Binarka przytyła po tym o 200 bajtów:
>
> [snip szczegóły]
>
> Nie będzie to żaden argument w dyskusji na temat metod wirtualnych, ale
> z ciekawości do małego programu w C+asm (na PIC24) dopisałem następujące
> wiersze:
>
[...]
Tylko zauważ, że chciałem tu zaprezentować koszt związany z funkcjami
wirtualnymi - użycie klas i funkcji wirtualnych do wypisywania kilku
napisów to 'trochę' głupi pomysł.
Odpowiednikiem funkcji wirtualnych z którym się spotkałem w C jest
wskaźnik na funkcję a z wtedy użycie metod wirtualnych to dodatkowy
koszt VTABLE.
> } if (ll == 3) { /* tuś się chyba pomylił, ale zostawiłem bez else, żeby
> było tak samo */
Rzeczywiście się pomyliłem pisząc kod, ale w poście statystyki są dla
poprawionego kodu, przeczyłem sam kod.
>
> Przy -O0 binarka zwiększyła się z 1452 do 1575 bajtów (123 bajty).
> Przy -Os binarka zwiększyła się z 1197 do 1269 bajtów (72 bajty).
+ 40 bajtów Os
+ 128 bajtów O0
>
> Po poprawieniu buga z "else":
> -O0 : 1452 do 1578 (126)
> -Os : 1197 do 1287 (90)
+ 72 bajty Os
+ 132 bajty O0
Kompiluję na gcc-4.7.0 z:
COMMON_FLAGS= -ggdb -Os $(INCLUDES) -mcpu=cortex-m3 -mthumb
-D__thumb2__ -msoft-float -mfloat-abi=soft
CXXFLAGS=$(COMMON_FLAGS) -std=gnu++11 -fno-exceptions -fno-rtti
>
> Ogólna zmiana przy włączeniu optymalizacji jest mała, bo to program
> tylko do testowania sporego kawałka kodu pisanego w asemblerze i C tam
> mało jest.
>
> Sam nie wiem czy i jakie wnioski z tego wyciągać.
>
Że kod w THUMB jest wydajniejszy niż w PIC32 ;) I że hardcore c++ bez
optymalizacji jest małą masakrą - całość przy O0 spuchła do 8176 -
prawie 2 razy (a przebudowałem tylko projekt, bez bibliotek).
--
Pozdrawiam
Michoo
Następne wpisy z tego wątku
- 06.05.12 00:30 Jerry1111
- 06.05.12 00:36 Jerry1111
- 06.05.12 01:13 Andrzej Ekiert
- 06.05.12 01:21 Sebastian Biały
- 06.05.12 10:57 Jerry1111
- 06.05.12 12:13 Sebastian Biały
- 06.05.12 13:47 Michoo
- 06.05.12 14:28 Michoo
- 06.05.12 15:04 Sebastian Biały
- 06.05.12 15:19 Jerry1111
- 06.05.12 15:37 Sebastian Biały
- 06.05.12 16:05 Michoo
- 06.05.12 16:12 Sebastian Biały
Najnowsze wątki z tej grupy
- Cewka elektrozaworu
- zapytanie o chip r5f21275nfp
- nie naprawiam więcej telewizorów
- Zrobił TV OLED z TV LCD
- Zasilacz USB na ścianę.
- Gniazdo + wtyk
- Aliexpress zaczął oszukiwać na bezczelnego.
- OpenPnP
- taka skrzynka do kablowki
- e-paper
- 60 mA dużo czy spoko?
- Dziwne zachowanie magistrali adresowej w 8085
- Współczesne mierniki zniekształceń nieliniowych THD audio, produkują jakieś?
- Jaki silikon lub może klej?
- Smar do video
Najnowsze wątki
- 2025-03-11 Warszawa => Kierownik ds. kluczowych Klientów <=
- 2025-03-11 Łódź => System Administrator (Linux, Active Directory) <=
- 2025-03-10 roaming
- 2025-03-10 wodor
- 2025-03-10 Ostrów Wielkopolski => NodeJS Developer <=
- 2025-03-10 Białystok => System Architect (background deweloperski w Java) <=
- 2025-03-10 Częstochowa => Backend Developer (Node + Java) <=
- 2025-03-10 Poznań => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produkc
- 2025-03-10 Bydgoszcz => Specjalista ds. Sprzedaży (transport drogowy) <=
- 2025-03-10 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-10 Chiny-Kraków => Senior PHP Symfony Developer <=
- 2025-03-10 Szczecin => Key Account Manager IT <=
- 2025-03-10 Warszawa => Node.js / Fullstack Developer <=
- 2025-03-10 Warszawa => Data Engineer (Tech Leader) <=
- 2025-03-10 Gliwice => Business Development Manager - Network and Network Security