tento příspěvek je inspirován mým nedávným objevem, jak řešit problém s HEX režimem. Porovnával jsem různé metody kreslení a jejich rychlost. Třeba to někomu pomůže


Ve zkratce:

Testy:
2000x DrawText(..., DT_NOPREFIX | DT_SINGLELINE) cca 5 sekund
2000x ExtTextOut(...) cca 0,65 sekund
Další funkce na výpis textu:
- TextOut - zjednodušená verze ExtTextOut, Rozdíl v rychlosti minimální - cca 0,65 sekund
- PolyTextOut - jen WinNT, umožňuje více volání ExtTextOut v jednom balíku - jeden balík 2000 řetězců cca 0,60 sekund

- TabbedTextOut - ??? názvem naznačuje základ ExtTextOut, ale s rychlostí DrawText - cca 5 sekund

- DrawTextEx - vylepšená verze DrawText - cca 5 sekund
Poznámky:
- Rozdíl v rychlosti TextOut a ExtTextOut jsem při mé nepřesnosti měření nezaznamenal. (Inspirace: KB71230: INFO: ExtTextOut() Instead of TextOut() to Improve Performance)
- Zjišťoval jsem, zda předpočítání lpDX parametru funknce ExtTextOut zrychlí dále výpis. Mám pocit, že výsledek byl opačný - mírné zpomalení, ale které nemohu vzhledem k nepřesností měření podložit.
Měření:
- čas byl měřen pomocí QueryPerformanceCounter() a QueryPerformanceFrequency()
- meření probíhalo s Wide (Unicode) verzemi API funkcí
- řetězec byl 133 znaků dlouhý obsahující znaky pouze z Basic Latin bloku
- kreslení probíhalo přes sebe v jednoduchém cyklu
- první znak se v každém kroku měnil
- nepřesnost/odchylka měření mezi různými pokusy byla cca 10%
- EDIT: Windows XP SP3, ATI Radeon HD 3200 + Catalyst 09.3
- EDIT: Použitý font: Consolas + ClearType Antialiasing