Odpovídáte na názor ke článku C++: Mapování hodnot z runtime na integrální konstanty.
Vychází to stejně. Switch je realizovaný jako JMP s úplně stejným obsahem. Rozdíl v tom, že jedno je CALL a druhý JMP se moc neprojeví, protože optimalizer by CALL strčil na jinou úroveň kódu, třeba do toho push_back, který se skrývá za přiřazení do iterátoru, který v tomhle případě inlinoval. Dělá to podle toho, jak moc vyjde inlinovaný kód dlouhý, když je přes nějaký treshold, rozhodne se tam udělat CALL.
V tom kódu s UTF-8 se navíc rozvine ten cyklus. Kdybys to psal switchem, nejspíš bys to rozvíjel ručně, nebo bys tam ten cyklus nechal. Možná - ale nemám to ověřený - by překladač nějak usoudil, že může vygenerovat varianty toho cyklu podle spočítaného indexu, ale myslím si že ne, alespoň ne GCC. Na to takovou umělou inteligencí neoplývají.
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 51 398×
Přečteno 24 147×
Přečteno 22 952×
Přečteno 21 211×
Přečteno 17 919×