Recomandări privind viteza în JScript adică, a treia parte din zonele cu probleme js

Recomandări cu privire la viteza în IE + JScript, partea a treia: probleme JS încercat

Bună, din nou, eu, Peter Gourevitch (Peter Gurevich), managerul de optimizare în IE. Am primit o mulțime de feedback-ul la primul nostru articol despre viteza în IE + JScript (Partea 1 Partea 2 (traducere)), și nu pot să aștept pentru a afla ce crezi despre a treia parte.

De data aceasta ne uităm la problemele specifice asociate cu închizători și OEP. Evitați scurtcircuitele la maxim, atunci când este posibil.

Cel mai adesea folosit ca un manipulare eveniment defect

Acest lucru se face în scopul de a încapsula funcția domeniului de aplicare pentru a executa o nouă funcție care va fi executat atunci când apelați de tratare a evenimentului corespunzător. Problema cu această abordare - legături între variabile ciclice și de închidere sunt aproape invizibile. Sarcina suplimentară pe memorie în stabilirea unor astfel de instalații cauzează costuri suplimentare de colectare a gunoiului poate fi de lucru suplimentar pentru IE sau alte browsere. Un bun exemplu pentru API pentru a primi date de la nodul de la distanță.

Mai mult decât atât, de fiecare dată când funcția este numit startDownload. în memorie va fi alocat un loc în noul obiect și starea acestuia.

Nu folosiți metodele accesoare de proprietate

tehnica este adesea utilizată în OOP presupune utilizarea unor metode pentru a accesa proprietățile. De exemplu, sub forma [get / set] _PropertyName (sau altele în stil de codificare zavimosti). Inițial, aceasta este o variabilă locală de clasă cu două metode pentru citirea și scrierea variabila. Aceste metode sunt adesea folosite pentru a controla vizibilitatea membrilor clasei - dar se pare că toate JScript. În plus, cele mai multe limbi orientate pe obiecte pentru a optimiza aceste proprietăți pentru a avea acces direct la o variabilă la momentul compilării, ceea ce este imposibil în JScript într-un limbaj interpretat.

De exemplu, masina obiect de probă. folosind mijloacele de acces:

Acest exemplu este perfect în ceea ce privește OOP, dar teribil pentru JScript. Variante de ocolire pentru accesul la membrii locali ai clasei este un efect foarte rău asupra performanței aplicației. Atâta timp cât nu avem nevoie de verificare a valorilor de intrare, în orice caz, nu este necesar să adăugați un cod suplimentar: acesta trebuie să fie cât mai clar.

Dacă încercați să rescrie exemplul de mai sus, veți obține un bun exercițiu pentru a elimina tot ceea ce este posibil.

Am eliminat două proprietăți suplimentare avansate ale unui obiect, o pereche de funcții, lucru inutile în valori de primire și setări, și câteva nume din context. Pe scurt, încercați să evitați ocoluri.

Pentru un exemplu complet, putem adăuga, de asemenea, prototipuri. Rețineți că lucrul cu un prototip într-adevăr nu este eficient ca membru de primă clasă de căutare efectuate în cazuri inițial un obiect, și apoi în prototip. Toate acestea se va asigura că exemplul nostru este mai lent. Dacă creați mii de copii ale obiectului, apoi prototipuri sunt cu adevărat eficiente. Acest lucru se realizează prin reducerea dimensiunii fiecărui obiect, așa cum sunt adăugate funcții suplimentare pentru fiecare instanță creat. Mai mult decât atât, inițializarea obiect poate fi mai rapid, deoarece nu are nevoie de fiecare setare timp a tuturor funcțiilor. Pentru a completa ce urmează este un exemplu complet. Pentru temele, încearcă să găsească un loc în care mașina pe prototipul va beneficia de o masina lent.

Asta e tot cu a treia parte, mulțumesc.

Peter Gurevich, manager de program

Justin Rogers, Inginer Dezvoltare Software

articole similare