Hlavní navigace

Odpověď na názor

Odpovídáte na názor ke článku C++: Mapování hodnot z runtime na integrální konstanty.

  • 5. 6. 2023 21:25

    JSH

    Ono není až tak důležité, kolik těch míst je. Ty počty skoků, pro které teď procesory zvládnou udržet predikční data jdou do tisíců (co jsem viděl testy). Daleko víc záleží na tom, jestli ty jednotlivé skoky mají predikovatelné chování. Nahradit jedno větvení se složitým vzorem několika jednoduššími se vyplatí.

    U toho utf8 bude silně záviset na datech. Pravidelná čínština bude mít pravděpodobně jiné vzory než ascii se smajlíky. Bez profilování není takřka v lidských silách odhadnout, jak dobře je nějaký kus kódu predikovatelný.

    Odstrašující příklad je std::variant. Standard říká, že visit má být O(1), takže tam musí být nějaká jump table dost podobná té vaší. Nestandardní implementace používají jednoduchý switch, který sice není O(1), ale v praktickém nasazení ten standardní přístup drtí tak, že to až hezké není. Ona je ta jump table i dost brutální neprůhledná bariéra pro optimalizátor.