-
Data: 2009-08-06 09:52:49
Temat: Re: Wywołanie wirtualne kontra wskaźnik do funkcji - optymalizacja
Od: Jakub Debski <d...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]on 2009-08-06, Mariusz Marszałkowski supposed :
> Czy w kompilatorach C++ ktoś zaimplementował jakieś optymalizacje do
> metod wirtualnych? Chodzi mi o jakąś technikę, dzięki której kompilator
> może wygenerować szybszy kod dla wywołań wirtualnych niż dla zwykłych
> wskaźników do funkcji.
Visual C++ od wersji 2005 przy użyciu Profile-Guided Optimization robi:
Virtual Call Speculation. Virtual calls can be expensive due to the
jumping through the vtable to invoke method. With PGO, the compiler can
speculate at the call site of a virtual call and inline the method of
the speculated object into the virtual call site; the data to make this
decision is gathered with the instrumented application. In the
optimized code, the guard around the inlined function is a check to
ensure that the type of the speculated object matches the derived
object.
G++ od wersji 3.0 ma:
If the library exports constructors to the user,
all the user callable virtual functions of the
class and its ancestors must be exported. Although
virtual functions are normally called
via the vtable (and therefore their names are
not needed, just the index in the vtable), by exposing
the constructor it might be possible to
determine the dynamic type of an expression at
compile time. Should the compiler do that, it
may elect to replace a virtual call with a direct
call, and hence require the name of the virtual
function.
pozdrawiam,
Jakub
Następne wpisy z tego wątku
- 09.08.09 20:17 MaciejS
- 10.08.09 03:43 Mariusz Marszałkowski
- 10.08.09 07:42 MaciejS
- 10.08.09 10:39 Mariusz Marszałkowski
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-02-25 Tak wiem.... To oczywiste ale jak oni dzisiaj dziadują na materiale
- 2025-02-25 rozliczenia policji
- 2025-02-25 Echhhhhh. Marzy mi się SWAP Audi A2 z 1.8 T ;-)
- 2025-02-25 Warszawa => Analityk Biznesowo-Systemowy <=
- 2025-02-25 Warszawa => SQL Developer <=
- 2025-02-25 Zbigniew Ziobro śmie sugerować "niedostatki niezawisłości" sędzi (wątpliwości co do bezstronności)
- 2025-02-25 Kraków => DevOps Engineer (Junior/Regular) <=
- 2025-02-25 Kraków => Front-end Developer <=
- 2025-02-25 Szpital
- 2025-02-24 Gniazdo + wtyk
- 2025-02-24 Dyrektor Toyoty miał rację. Elektryki to ślepa uliczka
- 2025-02-24 Białystok => System Architect (Java background) <=
- 2025-02-24 Białystok => System Architect (background deweloperski w Java) <=
- 2025-02-24 Białystok => Solution Architect (Java background) <=
- 2025-02-24 Warszawa => Data Engineer (Tech Leader) <=