Odpovídáte na názor ke článku C++: Mapování hodnot z runtime na integrální konstanty.
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.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 50 890×
Přečteno 23 805×
Přečteno 22 794×
Přečteno 20 804×
Přečteno 17 676×