Sunteți pe pagina 1din 1

n informatic, eficien?

este un termen utilizat pentru a descrie cteva atribute dezir


abile ale unui algoritm sau al unui alt construct, n afara unui concept curat, a
func?ionalit?ii, etc. Eficien?a n general e con?inut n dou propriet?i: vitez (timpul c
ia unei opera?ii pn se ncheie), ?i spa?iu (memoria sau depozitul nevolatil utiliza
t de ctre construct). Optimizarea este procesul prin care se produce cod care est
e ct mai eficient posibil, cteodat accentul punndu-se pe spa?iu n detrimentul vitezei
, sau viceversa.
Viteza unui algoritm este msurat n diverse moduri. Cea mai simpl metod utilizeaz compl
exitatea n timp pentru a determina Ordinul unui algoritm: de multe ori, este posi
bil realizarea unui algoritm mai rapid n detrimentul spa?iului utilizat. Acesta es
te ?i cazul cnd reutilizezi rezultatele unui calcul intensiv dect s le ob?ii prin r
ecalculare la comand. Aceasta este ?i o metod foarte obi?nuit de a cre?te viteza, c
hiar ntr-att nct limbajele adaug de obicei elemente speciale pentru a o facilita, cum
ar fi n C++ cuvntul cheie "mutable" (n englez).
Spa?iul unui algoritm este de fapt alctuit din dou lucruri separate dar n legtur. Pri
ma parte este spa?iul pe disc (sau echivalentul acestuia, depinznd de hardware ?i
limbaj) ocupat de ctre executabilul compilat din codul surs reprezentare a algori
tului. n multe cazuri acesta poate fi redus dac se prefer mecanisme de decizie n mom
entul execu?iei (cum ar fi func?ii virtuale ?i informa?ia de tip la rulare) n dau
na anumitor mecanisme de luare a deciziei n momenul compilrii (cum ar fi macro sub
stitu?ia ?i ?ablon). Oricum, costul acestor opera?ii va fi reflectat n viteza de
execu?ie.
Cealalt parte msurat a spa?iului unui algoritm este cantitatea de memorie alocat tem
porar n timpul procesrii. De exemplu, rezultatele precalculate, cum a fost men?ion
at anterior, mbunt?esc viteza n dauna acestui atribut (cre?te necesarul de memorie t
emporar alocat).
Optimizarea algoritmilor depinde n mod frecvent de propriet?ile ma?inii pe care al
goritmul va fi executat. De exemplu, cineva ar putea optimiza cod pentru eficien
? n domeniul timp n aplica?ii pentru calculatoare personale cu cantit?i apreciabile
de memorie, n acela?i timp cod ce trebuie introdus n dispozitive mici ?i cu pu?in m
emorie la dispozi?ie probabil va trebui fcut s func?ioneze mai lent pentru a econo
misi spa?iu.
O modalitate simpl de a afla dac merit ncercat optimizarea este urmtoarea: Fie O_1 ?i
O_2 cerin?ele originale de te timp ?i spa?iu (n general n Nota?ie asimptotic) ale a
lgoritmului. Fie N_1 ?i N_2 timpul ?i respectiv spa?iul necesare pentru noul cod
. Dac N_1 N_2 < O_1 O_2 , ar trebui ndeplinit opera?iunea de optimizare. Oricum, a
fost men?ionat anterior, s-ar putea s nu fie ntotdeauna cazul, iar aceast metod empi
ric poate da gre?.
Trebuie acordat o aten?ie sporit ca nu cumva , n goana dup un stil adecvat de editar
e a codului surs, s fie eclipsat eficien?a. Aproape tot timpul, un concept curat ?i
utilizabil e mult mai important dect un concept mic, rapid. Exist excep?ii la ace
ast regul (cum ar fi sistemele integrate, unde spa?iul este strns, ?i puterea de pr
ocesare minim) dar acestea sunt mai rare dect s-ar putea a?tepta cineva.

S-ar putea să vă placă și