KdokolivTohle je dvousečné. V případě, že vyvíjíš něco, kde nejde o rychlost, pak máš jistě pravdu. Jenže. Objektové programování je často re-use, tedy nikdy nevíš dopředu, kdy tento kód znova použiješ. Pokud se zrovna zaměřuješ apriory na psaní nějakých knihoven, pak je to už na zvážení. Je to o tom, kolik času a peněz chceš vrazit do problému a jak moc tě ten problém trápí, a hlavně, jaké ambice má ten problém v budoucnu.
A jinak to samé i s pamětovou náročností. Je na zvážení, zda program, který trvá X, ale mohl by trvat X*0.9 bude počítat v prvním 10 hodin a v druhém jen 9 (a budu mít hodinku zapařit si nějakou gamesu :-) A opět, je na zvážení, jestli program, který by mohl do paměti uložit 10000položek jich místo toho dokáže uložit třeba 11000, A třeba se těch 1000 položek už nevejde po paměti a musí být odswapovaných. Pak si nepřej vidět, jak to program zpomalí.
Bohužel, v současné době nejde o procenta ale spíš o desítky a stovky procen, o kolik bývají programy pomalejší, než by mohly být.
huh
Máš samozřejmě pravdu. Ta funkce se nejprve inlinuje a přitom její obsah se vyhodnotí jako konstanta, takže ve výsledku tam je normálné cmp na konstantu. Tohle je obrovská výhoda šablon. Překladač má o šablonách obrovské množství informací a tak spoustu nástrojů a způsobů, jak kód optimalizovat. Díky tomu, že šablony se instancují někde na úrovni "po" lexikální analýze, je schopen překladač vytvořit kód na míru danému typu, který se mnohem lépe optimalizuje, než by se třeba dělo s nějakou formou bytecode, kde těch informací už je řádově méně. |