[WinAPI] Care functii API sunt mai rapide, ANSI sau UNICODE?

Folosire Windows API in programe C/C++ (forum moderat)
Post Reply
User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

[WinAPI] Care functii API sunt mai rapide, ANSI sau UNICODE?

Post by Ovidiu Cucu » 16 Nov 2008, 18:24

Majoritatea functiilor Windows API care iau ca argumente stringuri au o versiune ANSI si una UNICODE.

Intrebare: Care versiune este mai rapida?

Raspuns: Depinde de sitemul de operare sub care va rula programul:
  • Windows 95/98/Me nu au suport nativ pentru UNICODE. Pentru a beneficia de UNICODE, trebuie sa folosim un layer intermediar, Microsoft Layer for Unicode (unicows.dll).
    Deci, sub Windows 9x, versiunea ANSI este mai rapida.
  • Windows NT4.0/2000/XP/2003/Vista ofera suport atat pentru UNICODE cat si pentru ANSI. Numai ca, in layer-ul cel mai de jos (ntdll.dll) functiile folosesc doar stringuri UNICODE. Din aceasta cauze, versiunile functiilor API care lucreaza cu stringuri ANSI trebuie sa faca ceva conversii suplimentare.
    In concluzie, sub platforma Windows NT este mai rapida versiuanea UNICODE.
  • Windows CE ofera suport doar pentru UNICODE. Este greu de crezut ca pentru un sistem embedded, cineva si-ar mai bate capul sa faca un layer suplimentar (desi nu poti fi sigur niciodata... :)).
    Asa ca, sub Windows CE comparatia nu are sens.
Note:
  1. Aplicatia LogExpert are incepand cu versiunea 1.4.0.6 atat o configuratie cu UNICODE cat si una fara. Puteti face comparatia (pe status-bar se afiseaza timpul in care se incarca inregistrarile).

<< Back to Windows API Index



Post Reply